3. 原始数据类型和运算符#
整数
# => 3
3
整数算术
# => 2
1 + 1
# => 7
8 - 1
# => 20
10 * 2
除法例外,除法的结果会自动转换为浮点数
# => 7.0
35 / 5
# => 3.3333333333333335
10.0 / 3
整数除法[//]的结果都是向下取整的
# => 1
5 // 3
# => 1.0 # 除数和被除数有一个是浮点数,结果就为取整的浮点数
5.0 // 3.0
# => -2
-5 // 3
# => -2.0
-5.0 // 3.0
浮点数的运算结果也是浮点数
# => 6.0
3 * 2.0
取模
# => 1
7 % 3
i % j 结果的正负符号会和 j(被除数) 相同,而不是和 i (除数)相同
# => 2
-7 % 3
x 的 y 次方
# => 16
2**4
用括号决定优先级
# => 7
1 + 3 * 2
# => 8
(1 + 3) * 2
布尔值 (注意: 首字母大写)
# => True
True
# => False
False
用 not 取非
# => False
not True
# => True
not False
逻辑运算符,注意 and 和 or 都是小写
# => False
True and False
# => True
False or True
True 和 False 实质上就是数字 1 和 0
# => 2
True + True
# => 8
True * 8
# => -5
False - 5
数值与 True 和 False 之间的比较运算
# => True
0 == False
# => False
2 == True
# => True
1 == True
# => True
-5 != False
使用布尔逻辑运算符对数字类型的值进行运算时,会把数值强制转换为布尔值进行运算,但计算结果会返回它们的强制转换前的值。 注意不要把 bool(ints) 函数与位运算的 “按位与”、”按位或” (&, |) 混淆。
# => False
bool(0)
# => True
bool(4)
# => True
bool(-6)
# => 0
0 and 2
# => -5
-5 or 0
用 == 判断是否相等
# => True
1 == 1
# => False
2 == 1
用 != 判断不相等
# => False
1 != 1
# => True
2 != 1
比较大小
# => True
1 < 10
# => False
1 > 10
# => True
2 <= 2
# => True
2 >= 2
判断一个值是否在范围里
# => True
1 < 2 and 2 < 3
# => False
2 < 3 and 3 < 2
大小比较还可以连起来!
# => True
1 < 2 < 3
# => False
2 < 3 < 2
(is 和 = = 的对比) is 判断两个变量是否引用同一个对象,而 = = 判断两个对象是否含有相同的值
# 变量 a 是一个新的列表, [1, 2, 3, 4]
a = [1, 2, 3, 4]
# 变量 b 赋值了变量 a 的值
b = a
# => True, a 和 b 引用的是同一个对象
b is a
# => True, a 和 b 的对象的值相同
b == a
# 变量 b 赋值了一个新的列表, [1, 2, 3, 4]
b = [1, 2, 3, 4]
# => False, a 和 b 引用的不是同一个对象
b is a
# => True, a 和 b 的对象的值相同
b == a
创建字符串可以使用单引号或双引号
"这是个字符串"
'这也是个字符串'
字符串可以使用加号连接成新的字符串
# => "Hello world!"
"Hello " + "world!"
非变量形式的字符串甚至可以在没有加号的情况下连接
# => "Hello world!"
"Hello " "world!"
字符串可以被当作字符列表
# => 'H'
"Hello world!"[0]
获得字符串的长度
# => 16
len("This is a string")
可以使用 f-strings 格式化字符串(python3.6+)
name = "Reiko"
# => "She said her name is Reiko"
f"She said her name is {name}."
可以在大括号内几乎加入任何 python 表达式,表达式的结果会以字符串的形式返回
# => "Reiko is 5 characters long."
f"{name} is {len(name)} characters long."
用 .format 来格式化字符串
"{} can be {}".format("strings", "interpolated")
可以重复参数以节省时间
# => "Jack be nimble, Jack be quick, Jack jump over the candle stick"
"{0} be nimble, {0} be quick, {0} jump over the {1}".format("Jack", "candle stick")
如果不想数参数,可以用关键字
# => "Bob wants to eat lasagna"
"{name} wants to eat {food}".format(name="Bob", food="lasagna")
如果 Python3 程序也需要在 Python2.5 以下环境运行,也可以用老式的格式化语法
"%s can be %s the %s way" % ("strings", "interpolated", "old")
None 是一个对象。None 是一个特殊的常量,和 False 不同,它不表示 0,也不表示空字符串,而表示没有值,也就是空值,注意它也是首字母大写。
# => None
None
当与 None 进行比较时不要用 ==,要用 is,is 是用来比较两个变量是否指向同一个对象。
# => False
"etc" is None
# => True
None is None
None,0,空字符串,空列表,空字典,空元组都算是 False,所有其他值都是 True
# => False
bool(0)
# => False
bool("")
# => False
bool([])
# => False
bool({})
# => False
bool(())