7.IF...ELSE和布尔类型

1.print() 和 return 辨析
我们把函数的返回值叫输出,print() 函数打印出来的也叫输出。
return是python的关键字,只能再函数内使用,再函数内不直接显示数据内容,可以将结果传到函数外使用。
print是函数,再函数内直接打印数据内容,打印完就销毁结果。
注:关键字 也叫保留字,是指 Python 中有特定含义的单词,比如 return、def、and 等,并且我们定义的变量名不能与 Python 中的关键字重名。
return 的使用范围仅限于函数内,功能也只有把函数内部的运行结果交付给外界的代码,具体要怎么用,交给外部决定,可以在外面打印、参与后续计算等。print() 只有把结果显示出来给你看的意思,看完就丢,显示在屏幕上之后就没了,不能参与函数外面的运算。


def sum1(x):
  y = x * 66

def sum2(x):
  y = x * 66
  return y

y1 = sum1(1)  # y1 的值为 None
y2 = sum2(1)  # y2 的值为 2

print(y1)  # 输出:None
print(y2)  # 输出:2
#最后两行用 print() 打印出的内容才能显示出来,而return 没有这个功能。

2.if......else
if ... else 语句是最基本的条件语句。
if + 条件 和 else 后面接的 英文冒号:,if 分支和 else 分支的代码都需要加缩进,用于表示它们在 if 和 else 的管辖之内。

a = 6
b =8

if a > b:
  print('a > b')
else:
  print('a ≤ b')


输出:
a ≤ b
判断完毕


Python 中等号的含义和我们在数学中接触的不一样,单个等号 = 的意思是给变量赋值,双等号 == 才是判断相等,我们可以用它来检验字符串是否一致,也可以用它来判断数值大小是否相同。

a=888
if a==888:
  print('密码正确')
else:
  print('密码错误')

输出:
密码正确

if 后面跟的条件,都是判断双等号 == 两边的数据是否相等。像双等号 == 这样用来判断数值关系的符号,在 Python 中也叫 比较运算符。

Python 中常用的比较运算符有下面这几种:

==    等于
>    大于
<    小于
>=    大于等于
<=    小于等于
!=    不等于


计算机是怎样判断 if 后面接的条件是否成立的呢?

这靠的是一种特殊的数据类型:布尔类型。

3.布尔类型
True 表示肯定含义,False 表示否定含义。在编程世界里,我们一般称 True 为 真,False 为 假。

这两个用来代表“真”与“假”的值就是我们所说的 布尔类型。布尔类型的值,也称 布尔值,只包括 True 和 False 两种,专门用来回答编程中 是与非 的问题。

对于那些用比较运算符写出来的条件表达式,Python 会自动判断条件是否成立,然后将条件表达式转换成布尔值:

满足条件时,条件为真,判断结果为 True;
不满足条件时,条件为假,判断结果为 False。

print(7 >= 1)
# 输出:True

print(1 > 3)
# 输出:False

print('Python' == 'python')
# 输出:False

由于判断结果只有两种(条件为真、条件为假),所以,条件表达式的值也只有 True 和 False 两种。打印条件表达式,结果要么是 True,要么是 False。

这说明 条件表达式本身就是一个布尔值。正因为此,条件表达式也叫 布尔表达式。

我们可以直接把 True 或 False 的值存到变量里,告诉 Python 某件事有没有发生:
# 今天是周末吗?
is_weekend = True

# 今天去购物了吗?
is_shopping = False


用来保存布尔值的变量,叫作 布尔变量。除了用 True 和 False 直接创建布尔变量之外,还可以通过 条件表达式 来定义布尔变量。


小牛想要买个6000 元的电脑,他想看一下自己目前的存款(8000 元)够不够,那就可以把比较结果存到变量 enough 里:
money = 8000
price = 6000

# 小牛的存款够买一台电脑吗?
enough = money >= price
print(enough)
# 输出:True
注意 enough = money >= price 这行代码,出现的第一个等号 = 是赋值的意思,后面跟的条件表达式 money >= price 作为一个整体被赋值给变量 enough。

if 语句中写的条件表达式,也叫布尔表达式,本质上都是布尔值 True 或 False。

money = 8000
price = 6000

# 判断:小牛的存款够买一台电脑吗?
if money >= price:
  print('够!')
else:
  print('不够不够')
# 输出:够!

if 分支的代码只有在条件成立时才会执行,换句话说,只有 if 后面的表达式结果为 True 时才会执行。

else 分支只在条件不成立时执行,这时条件表达式为 False。

执行哪一条的大权,就在 if 的手里,True 和 False 就是条件分支判断的唯一根据。

很显然,money >= price 的值是 True,if 后面跟的条件为真。

下面这段代码,请看看能不能自己理清楚 if ... else 内部的执行机制呢?

is_shopping = True

if is_shopping:
  print('疯狂购物')
else:
  print('在家躺平')
# 输出:疯狂购物

这个例子和我们之前写的 if ... else 语句看起来不太像:写在 if 后面的判断条件,不是条件表达式,而是一个布尔值。

但是内部原理却是一模一样的。无论判断条件是布尔值还是布尔表达式,if 都是根据判断条件是 True 还是 False 来决定进入哪一个分支。

if is_shopping: 这句代码里,if 后面跟的是变量 is_weekend。 is_shopping值为 True,这就说明条件为真,结果当然是执行 if 分支的代码,打印出 疯狂购物 咯。

如果我们给 is_shopping 赋值为 False,那执行的就是 else 分支的代码,最终打印出 在家躺平。

###Python 中有一种特殊的数据类型:布尔类型,它只有两个值,True 为真,False 为假,条件表达式的本质就是布尔值;
if 根据其后跟的是 True 还是 False 来决定执行哪些代码,True 则执行 if 分支,False 则执行 else 分支。

4.布尔类型的转换

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
整数 0, 1, 123, -1 和浮点数 0.0, -123.0 的转换结果,可以发现,除了 bool(0) 和 bool(0.0) 的转换结果是 False 之外,其他数字的转换结果都是 True。

True 和 False 用于表示数据的 有 和 无。0 和 0.0 都代表着“什么都没有哦”,所以,它俩会被转换成 False,而其他不等于 0 的数据,无论是正数还是负数转换结果都是 True。

下面看看字符串转换的结果:
print(bool(''))
# 输出:False

print(bool(' '))
# 输出:True

print(bool('0'))
# 输出:True

print(bool('ab'))
# 输出:True

提示:注意 '' 和 ' ' 的区别。前者是空字符串,后者引号里有一个空格。

只有完全为空的字符串 '' 才会转换成 False,其他字符串,无论是 ' ' 还是 '0',都包含了至少一个字符,就说明它们不是完全空的,转换结果均为 True。

综合字符串、整数和浮点数的转换结果,你能看出其中的转换规律吗?0,'' 代表“什么也没有”,转换结果都是 False,其它都是 True:

另外,无 return 函数会默认返回一个 None,它也会被转化为 False。


利用 数据可以转换成布尔类型 这个特点,我们可以用 if 语句很方便地检查某个数据是否为 0 或为空,具体做法是,把这个数据接在 if 后面作为判断条件,案例:


data = ''

if data:
  print(data)
else:
  print('这是个空字符串')
# 输出:这是个空字符串


这段代码里也没有出现 True 或 False 这样的布尔值啊,if 是怎么完成判断的呢?

我们通常会在 if 后面接布尔值作为 if ... else 语句的判断条件,不过,即使接在 if 后面的不是布尔值而是具体数据,条件判断也是可以完成的。

原因在于,if 会强制对其后的数据执行布尔类型转换,我们完全可以把 if data: 理解成 if bool(data):。

不管 data 的内容是什么,经过转换后只有两个结果:True 或 False,这样 if 就能“拿到”True 或 False 作为执行代码的判断依据啦。

如果 data 中的数据不为 0 也不为空,那转换后的结果就是 True,Python 就会执行 if 分支的代码,否则就执行 else 分支的代码。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值