Chiriri's blog Chiriri's blog
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)

Iekr

苦逼后端开发
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)
  • JavaSE

  • JavaEE

  • Linux

  • MySQL

  • NoSQL

  • Python

    • Python基础
    • 变量以及数据类型
    • 标识符
    • 输入输出
    • 进制
    • 数据类型的转换
    • 算术运算符
    • 分割
    • 一些算术小技巧
    • 运算符
      • 比较运算符
      • 逻辑运算符
      • 逻辑运算符的短路
      • 位运算符
      • 运算符的优先级
      • 三元表达式
    • 流程控制
    • 循环
  • Python模块

  • 机器学习

  • 设计模式

  • 传智健康

  • 畅购商城

  • 博客项目

  • JVM

  • JUC

  • Golang

  • Kubernetes

  • 硅谷课堂

  • C

  • 源码

  • 神领物流

  • RocketMQ

  • 短链平台

  • 后端
  • Python
Iekr
2020-11-08
目录

运算符

# 运算符

# 比较运算符

大于 > 小于 < 大于等于>= 小于等于 <= 不等于!= <>(也是不等于但 python3.7 不支持了) == 等于

判断结果输出是布尔值

print(2 > 1) #True
print(3 < 2) #False
print(2 >= 2) #True
print(2 <= 1) #False
print(1 != 2) #True
print('hello' == 'hello') #True
1
2
3
4
5
6
#比较符在字符串中使用
#字符串之间使用比较运算符,会根据各个字符逐一编码值(ASCII码表)比较
print('a' > 'b')   #False 97 > 98
print('abc' > 'a')  #False   97 > 98 逐一对比False就不往下

#字符串和数字不能进行比较,与等于做运算结果为False,与不等于做运算为True,不支持其他的比较运算
1
2
3
4
5
6
# print('a' > 90 )

print('a' == 90) #False
print('a' != 90) #True
1
2
3
4

# 逻辑运算符

逻辑与 and(并且) 逻辑或 or (或者) 逻辑非 not

逻辑与规则:只要有一个运算数是 False,结果就是 False;只有所有的运算数都是 True,结果才是 True(找第一个 False)

print(5 > 3 and 6 < 8 and 1 < 7)  #True
print(3 > 1 and 9 < 5 and 2 < 3)  #False
1
2

逻辑或规则:只要有一个运算是 True,结果就是 True; 只有所有的运算数都是 False,结果才是 False(找第一个 True)

print(5 > 3 or 6 < 1 or 1 > 3) #True
print(1 > 3 or 3 > 6) #False
1
2

逻辑非运算:Ture ==> False; False ==>Ture (取相反)

print(not(5 < 1))  #True
print(not(6 > 1))  #False
1
2

# 逻辑运算符的短路

逻辑与的短路,只要检索到有 False 就输出 False,后面的不会继续检索,取第一个 False 的值

5 > 3 and print('hello')  #True 继续检索
8 < 2 and print('weiwei')  #False 不会继续执行下一个
1
2

逻辑或的短路,只要检索到有 True 就输出 True,后面的不会继续检索,取第一个为 True

6 > 2 or print('123')  #True,不会继续执行下一个
9 < 1 or print('456')  #False 继续检索
1
2

逻辑与运算做取值时,取第一个为 False;如果所以运算数都是 True,取最后一个值

print(1 and 4 and 'hello' and 'test')   #test
print(4 and 7 and 0 and '' and '123')   #0
1
2

逻辑或运算做取值时,取第一个为 True;如果所以运算数都是 False,取最后一个值

print(0 or 'hello' or '' or [])  #hello
print(0 or [] or '' or None or ()) # ()
1
2

# 位运算符

按位与 & 按位或 | 按位异或 ^ 按位左移 <<按位右移>> 按位取反~

a = 42
b = 13
# 按位与&  是把整型转换成二进制进行运算,两个二进制同为1则为1,否则为0,进行运算的结果
#  42 = 0b101010   0010 1010    ==>
#  13 = 0b1101     0000 1101    ==>0000 1000   ==> 0b1000 = 8
print(a & b)
1
2
3
4
5
6

按位或 | 只有一个为 1 就为 1

#  00101111 ==> 47
print(a | b)
1
2

按位异或 ^ 相同为 0,不同为 1

# 00100111  ==> 39
print(a ^ b)
1
2

按位左移 << 转换成二进制在尾部加 0,即头部向前移 n 位

#   101 ==>  101000
x = 5
print(x << 3)   # x << n ==> a * 2 ** n ==> a*2的n次方
1
2
3

按位右移 >> 转换成二进制在头部加 0,即尾部向后移 n 位,溢出的数要丢弃 (也就是丢弃尾部二进制的 n 位数)

# 10001 ==> 100
x = 17
print(x >> 2) # x >> n ==> a 除以2的n次方
1
2
3

按位取反~把数据每个二进制位进行取反,即把 1 变成 0,0 变成 1, 涉及补码和反码有点绕,以后补习 #https://www.cnblogs.com/jniantic/p/12189648.html

# 0101 ==> 010
x = 6
print(~6)  #~x = -(x+1)
1
2
3

用位运算符拆分十六进制各两位出来

x = 0xF0384E
R = x >> 16              #右移16位把后面16位溢出
G = x >> 8 & 255       # 255 为 1111 1111,然后与运算把前面的8位去除
B = x & 255              # 同上,把前面16位去除
print(hex(R),hex(G),hex(B))
1
2
3
4
5

# 运算符的优先级

#逻辑运算符的优先级   not > and > or
#先加减后乘除
#()括号内是最高优先级的
# ** 比乘除高
# ~ + - (正负号) 高
print(True or False and True)  #True
print(True and not False or False)  #True
1
2
3
4
5
6
7

# 三元表达式

#3. 三元表达式(if...else语句的简写),将if...else转变成一行代码
num1 = 12
num2 = 42
# if num1 < num2:
#     x = num2
# else:
#     x = num1
x = num1 if num1 > num2 else num2   # a if 1 > 2 else b,意思是如果1>2成立 则输出a否则输出b
print(x,'这数大')
1
2
3
4
5
6
7
8
9
编辑 (opens new window)
上次更新: 2023/12/06, 01:31:48
一些算术小技巧
流程控制

← 一些算术小技巧 流程控制→

最近更新
01
k8s
06-06
02
进程与线程
03-04
03
计算机操作系统概述
02-26
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Iekr | Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式