疯狂Python讲义之变量和简单类型--运算符笔记5

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

目录

1. 赋值运算符

2. 算术运算符

3. 位运算符

 4. 索引运算符

5. 比较运算符与bool类型

6. 逻辑运算符

7. 三目运算符

8. in 运算符

9. 运算符的结合性和优先级


运算符是一种特殊的符号,用来表示数据的运算、赋值和比较等。Python 语言使用运算符将一个或多个操作数连接成可执行语句,用来实现特定功能。

Python 语言中的运算符可分为如下几种。

  • 赋值运算符
  • 算术运算符
  • 位运算符
  • 索引运算符
  • 比较运算符
  • 逻辑运算符

1. 赋值运算符

赋值运算符用于为变量或常量指定值, Python 使用“ =”作为赋值运算符。通常,使用赋值运算符将表达式的值赋给另一个变量。

# 为变量st赋值为Python
st = "Python"
# 为变量pi赋值为3.14
pi = 3.14
# 为变量visited赋值为True
visited  = True
print(st)
print(pi)
print(visited)

# 将变量st的值赋给st2
st2 = st
print(st2)

a = b = c = 20
print(a)
print(b)
print(c)

d1 = 12.34
# 将表达式的值赋给d2
d2 = d1 + 5
# 输出d2的值
print("d2的值为:%g" % d2 ) # 17.34

2. 算术运算符

python 支持所有的基本算术运算符,这些算术运算符用于执行基本的数学运算, 如加、减、乘、除和求余等。

+ :加法运算符: “+”还可以作为字符串的连接运算符。

一:减法运算符:  除可以作为减法运算利之外,还可以作为求负的运算符

*:乘法运算符:  还可以作为字符串(序列) 的连接运算符, 表示将N 个字符串连接起来

/或// : 除法运算符。Python 的除法运算符有两个:“/”表示普通除法,使用它除出来的结果与平常数学计算的结果是相同的(即除不尽时,会产生小数部分);而“//”表示整除,使用它除出来的结果只有整数部分,小数部分将会被舍弃。

Python不允许使用0作为除数,否则将会引发Zero DivisionError 错误。

%:求余运算符。Python 不要求求余运算符的两个操作数都是整数, Python 的求余运算符完全支持对浮点数求余。求余运算的结果不一定总是整数,它是使用第一个操作数来除以第二个操作数,得到一个整除的结果后剩下的值就是余数。

由于求余运算也需要进行除法运算,因此求余运算的第二个操作数不能是0 , 否则程序会报出Zero DivisionError 错误。

**:乘方运算符。Python 支持使用“ ** ‘’作为乘方运算符, 这是一个使用非常方便的运算符。
由于开方其实是乘方的逆运算,因此实际上使用“**”也可进行开方运算。

C 与 Pyhon 语言

在数学公式中,两种语言的表示算法都是一样的,都是:

r = a - n*[a/n]

以上,r是余数,a是被除数,n是除数。

唯一不同点,就是商向0或负无穷方向取整的选择,c从c99开始规定向0取整,python则规定向负无穷取整,选择而已

C 语言       :       (a%n的符号与a相同)

Python语言:       (a%n的符号与n相同)

print("5%3的值为:", 5 % 3) # 输出2
print("5.2%3.1的值为:", 5.2 % 3.1) # 输出2.1
print("-5.2%-3.1的值为:", -5.2 % -3.1) # 输出-2.1
print("5.2%-2.9的值为:", 5.2 % -2.9) # 输出-0.6
print("5.2%-1.5的值为:", 5.2 % -1.5) # 输出-0.8
print("-5.2%1.5的值为:", -5.2 % 1.5) # 输出0.8
#print("5对0.0求余的结果是:", 5 % 0.0) # 导致错误
print("5的2次方”, 5 ** 2) # 25
prit(" 27的开3次方", 27 ** (1 / 3))  # 3.0

3. 位运算符

使用位运算符可以直接操作数值的原始bit 位, 尤其是在使用自定义的协议进行通信时,使用位运算符对原始数据进行编码和解码也非常有效。

Python 支持的位运算符有如下6 个。

  • & : 按位与。
  • | : 按位或。
  •  ^  : 按位异或。
  • ~   :按位取反。
  • << :左位移运算符。
  • >> : 右位移运算符。

计算机底层以补码的形式保存所有的整数。补码的计算规则是:正数的补码和原码完全相同,负数的补码是其反码加1; 反码是对原码按位取反,只是最高位(符号位)保持不变。

Python 的右移运算符为: >>。对于“>>”运算符而言,把第一个操作数的二进制码右移指定位数后,左边空出来的位以原来的符号位来填充。即:如果第一个操作数原来是正数,则左边补0;如果第一个操作数是负数,则左边补0.

# 将输出1
print(5 & 9)
# 将输出13
print(5 | 9)

a = -5
# 将输出4
print( ~a)
# 将输出12
print(5 ^ 9)

# 输出20
print(5 << 2)
# 输出-20
print(-5 << 2)

b = -5
# 输出-2
print(b >> 2)

 4. 索引运算符

索引运算符就是方括号,在方括号中既可使用单个索引值,也可使用索引范围。实际上,在使用索引范围时,还可指定步长。

5. 比较运算符与bool类型

Python 提供了bool 类型来表示真(对)或假(错)。真(对) , Python 使用True 来代表:假(错),Python 使用False 来代表。

Python 支持的比较运算符如下:

  • >:大于,如果运算符前面的值大于后面的值,则返回True ;否则返回Fal se 。
  • >=: 大于或等于,如果运算柯:前面的值大于或等于后面的值,则返回True :否则返回False 。
  • <:小于,如果运算符前面的值小于后面的值,则返回True ;否则返回False 。
  • <=: 小于或等于, 如果运算符前面的值小于或等于后面的值,则返回True ;否则返回False 。
  • ==: 等于,如果运算符前面的值等于后面的值,则返回True ;否则返回Fa lse 。
  • !=:不等于, 如果运算符前面的值不等于后面的值,则返回True ;否则返回False 。
  • is: 判断两个变量所引用的对象是否相同,如果相同则返回True 。
  • is not : 判断两个变量所引用的对象是否不相同,如果不相同则返回True 。

Python 的两个booI 值分别是True 和False , 但实际上True 也可被当成整数1 使用, Fal se 也可被当成整数0 使用。也就是说, True 、False 两个值完全可以参与各种算术运算。

关于 == 与 is  看上去很相似,但实质上有区别, == 只比较两个变量的值,但is 要求两个变量引用同一个对象。

# 输出True
print("5是否大于 4:", 5 > 4)
# 输出False
print("3的4次方是否大于等于90.0:", 3 ** 4 >= 90)
# 输出True
print("20是否大于等于20.0:", 20 >= 20.0)
# 输出True
print("5和5.0是否相等:", 5 == 5.0)
# 输出False
print("True和False是否相等:", True == False)


# 输出True
print("1和True是否相等:", 1 == True)
# 输出True
print("0和False是否相等:", 0 == False)
print(True + False) # 输出1
print(False - True)  # 输出-1

实际上, Python 提供了一个全局的 id() 函数来判断变量所引用的对象的内存地址。

import time
# 获取当前时间
a = time.gmtime()
b = time.gmtime()
print(a == b) # a和b两个时间相等,输出Ture
print(a is b) # a和b不是同一个对象,输出 False
print(id(a))
print(id(b))

6. 逻辑运算符

逻辑运算符用于操作bool 类型的变量、常量或表达式,逻辑运算的返回值也是bool值。

Python 的逻辑运算符有如下三个。

  • and : 与,前后两个操作数必须都是True 才返回True ; 否则返回False ,
  • or:或,只要两个操作数中有一个是True ,就可以运回True ;否则返回False,
  • not :非, 只需要一个操作数,如果操作数为True ,则返回False ; 如果操作数为False ,则运回True 。
# 直接对False求非运算,将返回True
print(not False)
# 5>3返回True,20.0大于10,因此结果返回True
print(5 > 3 and 20.0 > 10)
# 4>=5返回False,"c">"a"返回True。求或后返回True
print(4 >= 5 or "c" > "a")

对于组合逻辑来说,使用圆括号保证运算顺序非常重要

7. 三目运算符

Python 可通过if 语句来实现三目运算符的功能,因此可以近似地把这种if 语句当成三目运算符。

作为三目运算符的if吾句的语法格式如下:

True statements if expressio else False statements

三目运算符的规则是:先对逻辑表达式expression 求值,如果逻辑表达式返回True ,则执行并返回True statements 的值;如果逻辑表达式返回False , 则执行并返回False statements 的值。

a = 5
b = 3
st = "a大于b" if a > b else  "a不大于b" 
# 输出"a大于b"
print(st)

# 输出"a大于b"
print("a大于b") if a > b else print("a不大于b")

# 第一个返回值部分使用两条语句,逗号隔开
st = print("crazyit"), 'a大于b' if a > b else  "a不大于b" 
print(st)

# 第一个返回值部分使用两条语句,分号隔开
st = print("crazyit"); x = 20 if a > b else  "a不大于b" 
print(st)
print(x)

c = 5
d = 5
# 下面将输出c等于d
print("c大于d") if c > d else (print("c小于d") if c < d else print("c等于d"))

Python 允许在三目运算符的True statements 或False_statements 中放置多条语句。Python 主要支持两种放置方式。

  • 多条语句以英文逗号隔开: 每条语句都会执行, 程序返回多条语句的返回值组成的元组。
  • 多条语句以英文分号隔开:每条语句句都会执行,程序只返回第一条语句的返回值。 

需要指出的是, 三目运算符支持嵌套,通过嵌套三目运算符, 可以执行更复杂的判断。

8. in 运算符

Python 提供了in 运算符,用于判断某个成员是否位于序列中,比如前面介绍的str 就是一个序列,因此程序可使用in 运算符判断字符串是否包含特定子串。

除in 运算符之外, Python 也提供了in 的反义词: not in 。

s = 'crazyit.org'
print('it' in s) # True
print('it' not in s) # False
print('fkit' in s) # False
print('fkit' not in s) # True

9. 运算符的结合性和优先级

所有的数学运算都是从左向右进行的, Python 语言中的大部分运算符也是从左向右结合的,只有单目运算符、赋值运算符和三目运算符例外,它们是从右向左结合的,也就是说,它们是从右向左运算的。

运算符有不同的优先级,所谓优先级就是在表达式运算中的运算顺序。

不要过多地依赖运算符的优先级来控制表达式的执行顺序,这样可读性太差,应尽量使用“()”来控制表达式的执行顺序。 

猜你喜欢

转载自blog.csdn.net/XieWinter/article/details/94382833
今日推荐