跳转至

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(())