1、if ... else ... 函数 判断
前面学习了if ... else ... 表达式,要知道Python会对条件进行判断,条件表达式的结果只能是True和False,结果是一个布尔值,也就是布尔表达式。
rent = 3500
print(rent <= 3000)
结果是False
money = 13000
price = 7500
# 小贝的存款够买一个新手机吗?
enough = money >= price
print(enough)
# 输出:True
注意 enough = money >= price
这行代码,出现的第一个等号 =
是赋值的意思,后面跟的条件表达式 money >= price
作为一个整体被赋值给变量 enough
。
变量 money
的值是 13000
,显然比 price
的值 7500
更大,所以,money >= price
的值是 True
,最终布尔值 True
就被赋值给了变量 enough
。
2、布尔类型转换
Python 中所有的数据类型,包括讲过的和没讲过的,都可以用 bool()
函数转换为布尔值。具体的转换规则如何呢?我们从整数和浮点数开始,看几个简单的例子:
print(bool(0))
# 输出:False
print(bool(0.0))
# 输出:False
print(bool(1))
# 输出:True
print(bool(123))
# 输出:True
print(bool(-1))
# 输出:True
print(bool(-123.0))
# 输出:True
print(bool(''))
# 输出:False
print(bool(' '))
# 输出:True
print(bool('0'))
# 输出:True
print(bool('ab'))
# 输出:True
上面展示了整数 0, 1, 123, -1 和浮点数 0.0, -123.0 的转换结果,可以发现,除了 bool(0)
和 bool(0.0)
的转换结果是 False
之外,其他数字的转换结果都是 True
。
True
和 False
用于表示数据的 有 和 无。0 和 0.0 都代表着“什么都没有哦”,所以,它俩会被转换成 False
,而其他不等于 0 的数据,无论是正数还是负数转换结果都是 True
提示:注意 ''
和 ' '
的区别。前者是空字符串,后者引号里有一个空格。
每种数据类型中,各自都有且 只有一个 能被转换成 False
的值,表示“什么也没有”,在字符串中,是空字符串 ''
,在整数中,是 0
,在浮点数中,是 0.0
。它们会被 bool()
函数转换成 False
,而其它的所有数据的转化结果都是 True
。
另外,无 return
函数会默认返回一个 None
,它也会被转化为 False
。
利用 数据可以转换成布尔类型
这个特点,我们可以用 if
语句很方便地检查某个数据是否为 0 或为空,具体做法是,把这个数据接在 if
后面作为判断条件,举个例子:
data = ''
if data:
print(data)
else:
print('这是个空字符串哦')
# 输出:这是个空字符串哦
if
会强制对其后的数据执行布尔类型转换,我们完全可以把 if data:
理解成 if bool(data):
不管 data
的内容是什么,经过转换后只有两个结果:True
或 False
,这样 if
就能“拿到”True
或 False
作为执行代码的判断依据啦。
如果 data
中的数据不为 0 也不为空,那转换后的结果就是 True
,Python 就会执行 if
分支的代码,否则就执行 else
分支的代码。