5.1 条件测试

大多数条件测试将一个变量的当前值同特定值进行比较。最简单的条件测试检查变量的值是否与特定值相等:

  1. cars = ['audi','bmw','nissan','toyota','benchi']
  2. for car in cars:
  3. if car == 'bmw': #两个等号是发问,等于吗?,一个等号是陈述,设置变量
  4. print(car.upper()) #upper调整字符为大写
  5. else:
  6. print(car.title()) #调整第一个字符为大写
  7. #打印结果
  8. Audi
  9. BMW
  10. Nissan
  11. Toyota
  12. Benchi

5.2 检查是否不等于

  1. cars = ['audi','bmw','nissan','toyota','benchi']
  2. for car in cars:
  3. if car != 'audi': #不等于,及打印结果要排查的值
  4. print(car)
  5. #打印结果
  6. cars = ['audi','bmw','nissan','toyota','benchi']
  7. for car in cars:
  8. if car != 'audi': #不等于,及打印结果要排查的值
  9. print(car)
  10. #打印结果
  11. bmw
  12. nissan
  13. toyota
  14. benchi

5.3 数值比较

条件语句中可包含各种数学比较,如小于、小于等于、大于、大于等于:

>>> age = 19
>>> age < 21   
True
>>> age <= 21
True
>>> age != 21
True
>>> age > 21
False
>>> age >= 21
False

多个条件比较::and,or

#and 两个条件都为True
>>> age_0 = 22
>>> age_1 = 18
>>> age_0 >= 21 and age_1 >= 21
False
>>> age_1 = 23
>>> age_0 >= 21 and age_1 >= 21
True

#or 至少一个条件为True
>>> age_0 = 18
>>> age_1 = 21
>>> age_0 >= 16 or age_1 >= 20 #一个True
True
>>> age_0 >= 16 or age_1 >= 22 #两个True
True
>>> age_0 >= 19 or age_1 >= 22  #没有True
False

in(包含)和 not in(不包含)

car = 'audi'
cars = ['audi','bmw','nissan','toyota','benchi']
if car in cars:
    print(f"this car is {car}")
else:
    print("no car")
#打印结果
this car is audi

car = 'audi'
cars = ['audi','bmw','nissan','toyota','benchi']
if car not in cars:
    print(f"this car is {car}")
else:
    print("no car")
#打印结果
no car

5.4 if语句

(1)if-else结构

age = 19
if age > 18:          #如果为True
    print(f"{age}岁,成年人")  #则打印这行
else:
    print(f"{age}岁,青少年")  
#打印结果
19岁,成年人

age = 17
if age > 18:          #如果为False
    print(f"{age}岁,成年人") 
else:
    print(f"{age}岁,青少年")    #则打印这行
#打印结果
17岁,青少年

(2) if-elif-else结构

游乐场收费标准: 4岁以下免费;4~18岁收费25美元;18岁(含)以上收费40美元。

ages = 2,10,20
for age in ages:
    if age < 4:
        print(f"{age}岁:4岁以下免费!")
    elif age in range(4,18):
        print(f"{age}岁:4-18岁收费25美元!")
    else:
        print(f"{age}岁:18岁以上收费40美元")
#打印结果
2岁:4岁以下免费!
10岁:4-18岁收费25美元!
20岁:18岁以上收费40美元

(3)if-elif-elif结构,省略else代码块

if-elif-else结构功能强大,但仅适合用于只有一个条件满足的情况:遇到通过了的测试后,Python就跳过余下的测试。这种行为很好,效率很高,让你能够测试一个特定的条件。

age = 10
if age < 4:
    print(f"{age}岁:4岁以下免费!")
elif age in range(4,18):
    print(f"{age}岁:4-18岁收费25美元!")
elif age >= 18:
    print(f"{age}岁:18岁以上收费40美元")
#打印结果
10岁:4-18岁收费25美元!

5.5 测试多个条件

if-if-if结构

name = ['ww','fll']
if 'ww' in  name:
    print("adding ww")
if 'lhl' in name:
    print("adding lhl")
if 'fll' in name:
    print("adding fll")
print("that is test!")
#打印结果

如果只想执行一个代码块,就使用if-elif-else结构;如果要执行多个代码块,就使用一系列独立的if语句。

5.6 检查特殊元素

name_list =['xiaoli','xiaowang','xiaohua']
for name in name_list:
    if name == 'xiaowang':
        print("sorry,xiaowang is a man")
    else:
        print(f"{name} is woman!")
print("This is a test!")
#打印结果
xiaoli is woman!
sorry,xiaowang is a man
xiaohua is woman!
This is a test!

5.7 确认列表是否为空

我们对于处理的每个列表都做了一个简单的假设——假设它们都至少包含一个元素。因为马上就要让用户来提供存储在列表中的信息,所以不能再假设循环运行时列表不是空的。
有鉴于此,在运行for循环前确定列表是否为空很重要。

peiliao_list = []   #先让列表为空
if peiliao_list:
    for peiliao in peiliao_list:
        print(f"加了 {peiliao}.")
    print("你的披萨做好了")
else:
    print("你确定点原味披萨吗?") 
#打印结果
你确定点原味披萨吗?

#对比:
peiliao_list = ["培根"]
if peiliao_list:
    for peiliao in peiliao_list:
        print(f"加了{peiliao}.")
    print("你的披萨做好了")
else:
    print("你确定点原味披萨吗?")  
#打印结果
加了培根.
你的披萨做好了!