Python Learning-条件控制语句

Python的条件控制语句-if语句,通过判断条件值,而决定是否执行代码块

if True:
    do()

if表示如果,即,如果条件成立,则执行相应代码

那什么情况下条件是成立的呢?if后面通常是一个表达式,一个可以返回真假值的表达式,这种表达式被称为条件测试,也叫布尔表达式。布尔表达式有两个值,一个是True,表示,一个是False,表示假。当返回的值是True时,则条件是成立的,而False情况下是不成立。也就是说,只有当if后面的返回值是True时,才会执行代码块do()

注:do()是什么先不用关注,那是临时写的一个用来占位的句子,没有任何意义,如果写进编辑器里还会报错,重在理解

布尔值

布尔值是一个逻辑值,只有True(真)和False(假)。另外,数值0表示False,非0表示True,一般用1表示True

通过比较运算符返回布尔值

例:

# 这是个批萨
food = 'pizza'
# 判断food是否等于'pizza'
food == 'pizza'

==运算符用来比较两个对象是否相等

将上面两行代码在Python的IDLE中输出,结果如下:

>>> food = 'pizza'
>>> food == 'pizza'
True

可以看出,因为food被赋值为’pizza’,所以它等于’pizza’,因此==判断这个结果是相等的,所以返回了True

如果将food的值改为'apple',再看结果:

>>> food = 'apple'
>>> food == 'pizza'
False

因此food不等于'pizza',所以返回了False

在比判断字符串是否相等的时候,字母的大小写会影响结果

>>> food = 'pizza'
>>> food == 'Pizza'
False

可以判断两个值是否相等,同样可以判断两个值是否不相等

>>> food = 'apple'
>>> food != 'pizza'
True

!=运算符表示不相等的意思,即判断两值是否不相等,如果不相等返回True,如果相等,则返回False。这里因为food确实是不等于'pizza',所以返回了True

比较数字的时候,会判断大小,常用的运算符有

  • >大于
  • <小于
  • >=大于等于
  • <=小于等于

例:

>>> price = 19  # 价格,19元
>>> price < 21
True
>>> price > 21
False
>>> price <= 21
True
>>> price >= 21
False

上面说的都是两值之间的比较,如果要同时比较三个值呢?或者更多?比如判断西瓜当前的市场价是否在10元/kg~15元/kg的范围内

>>> watermelon_price = 13  # 假设现在西瓜13元/kg
>>> watermelon_price >= 10 and watermelon_price <= 15
True

and关键字可以将多个条件表达式连在一起,只有在and左右的条件表达式都为True时才会返回True,否则返回False

另一个例子,当西瓜单价小于2元/kg或者大于20元/kg的时候,说明要么西瓜质量不好,要么太贵,如何筛选出这个结果呢?

>>> watermelon_price = 21  # 假设现在西瓜21元/kg
>>> watermelon_price < 2 or watermelon_price > 20
True

or关键字表示的意思,即多个条件表达式中,只要有一个成立,就可以返回Ture,如果都不成立才会返回False

条件表达式用在列表中的时候,一般是判断某个元素是否包含在列表中,或者判断某个元素是否不在列表中

判断某个元素是否在列表中用关键字in,判断某个元素是否不在列表中用关键字not in

例,这里有一分食物清单,小明喜欢吃的食物是pizza,判断清单中是否有小时吃的食物:

# 定义一个食物名单列表
foods = ['potato', 'tomato', 'noodles', 'apple', 'pizza']
# 小明最喜欢的食物
favorite_food = 'pizza'
# 判断favorite_food是否在列表foods,如果存在返回True,不存在返回False,并将结果赋值给变量value
value = favorite_food in foods
# 打印结果
print(value)
# 判断favorite_food是否不在列表foods,如果不存在返回True,存在返回False,并将结果赋值给变量value
value = favorite_food not in foods
# 打印结果
print(value)

上面的代码是在编辑器中输出的,而不是在IDLEK写的

输出:

True
False

注,通常!===判断速度更快

走进if语句的世界

了解了上面说的布尔表达式后,再回过头来看if语句,将更容易理解

例,还用上面的食物清单,如果清单中有小明喜欢的食物,则打印That's my favorite food

# 定义一个食物名单列表
foods = ['potato', 'tomato', 'noodles', 'apple', 'pizza']
# 小明最喜欢的食物
favorite_food = 'pizza'
# 判断清单中是否有小明喜欢的食物
if favorite_food in foods:
    print("That's my favorite food", favorite_food)

输出:

That’s my favorite food pizza

我们已经知道,favorite_food in foods会返回True,所以if语句判断条件表达成立,因此会执行下面的被缩进的代码块print("That's my favorite food", favorite_food)

if-else语句

if是在条件成立时执行代码块;而else是在if判断条件不成立时执行的

例:

# 定义一个食物名单列表
foods = ['potato', 'tomato', 'noodles', 'apple', 'pizza']
# 小明最喜欢的食物
favorite_food = 'cucumber'
# 判断清单中是否有小明喜欢的食物
if favorite_food in foods:
    print("That's my favorite food", favorite_food)
else:
    print("There's no food I like")

输出:

There’s no food I like

这里将小明喜欢的食物改成了黄瓜(cucumber),因为列表中没有这个元素,所以if语句不会被执行,这种情况下,将会执行else下的代码块

if-elif-esle语句

elif可以对我个表达式进行判断,假如现在有两份食物清单,判断其中是否有小明喜欢的食物,例:

# 第一个食物名单列表
foods1 = ['potato', 'tomato', 'noodles', 'apple', 'pizza']
# 第二个食物名单列表
foods2 = ['cucumber', 'eggplant', 'rice', 'milk']
# 小明最喜欢的食物
favorite_food = 'cucumber'
# 判断清单中是否有小明喜欢的食物
if favorite_food in foods1:
    print("That's my favorite food", favorite_food)
elif favorite_food in foods2:
    print("That's my favorite food", favorite_food)
else:
    print("There's no food I like")

输出:

That’s my favorite food cucumber

因为第二个食物列表中有小明喜欢的食物,所以会输出That's my favorite food cucumber

注,在使用if-elif时,可以不使用else,这个得看实际情况;另外,elif可以有多个

例:

# 定义一个食物名单列表
foods = ['potato', 'tomato', 'noodles', 'apple', 'pizza']
# 小明最喜欢的食物黄瓜
favorite_food = 'cucumber'

# 遍历食物清单,小明现在很饿
for food in foods:
    if food == favorite_food:
        print("抱歉,黄瓜没有货")
    elif food == 'noodles':
        print("抱歉,面条没有货")
    elif food == 'pizza':
        print("抱歉,批萨没有货")

输出:

抱歉,面条没有货
抱歉,批萨没有货

小明现在很饿,却吃不到自己想吃的东西,他只好换一家餐馆,希望下一家的食物能多一点

目录
上一章 Python Learning-列表的更多操作
下一章 Python Learning-字典

猜你喜欢

转载自blog.csdn.net/weixin_38486884/article/details/81983578