十四、if 语句

1、if 语句

每条if 语句核心都是一个值为true或者false的表达式,这种表达式被称为“条件测试”,如果为true则执行if后面的语句,否则执行else后的语句。

cars = ['audi', 'bmw', 'subaru', 'toyota']   # 定义一个列表
for car in cars:                              # 遍历列表所有元素
    if car == 'bmw':                           # 当car为bmw时,输出全部为大写字母,否则首字母大写
        print(car.upper())
    else:
        print(car.title())

Audi
BMW
Subaru
Toyota

1.1、检查条件测试是否相等

大多数条件测试都将一个变量的当前值与特定的值比较:

car = 'bmw'       # 一个等号为陈述,将字符串赋值给变量car
car == 'bmw'    # 两个等号为发问,意为car的值是否为bmw
True

1.1.1、检查是否相等时不考虑大小写

>>> car = 'Audi'     
>>> car == 'audi'
False

>>> car.lower() == 'audi'  # 将变量car的值转换为小写,再与'audi'比较,两个值相同,则返回True
True

>>>car    # 不影响原有变量的值
'Audi'

网站可能采用类似的方式测试用户名的唯一性,当用户提交新的用户名时,将其转换为小写,并于所有既有用户名的小写版本进行比较,如果已有用户名‘john’(不论大小写如何),则用户提交用户名‘john’时将早到拒绝。

1.1.2、检查是否不想等

判断不想等,使用(!=)

requested_tooping = 'muushrooms'
if requested_tooping != 'anchovies':
  print('Hold the anchovies!')

1.1.3、比较数字

比较数字,可以比较是否相等、不相等、大于、小于、大于等于、小于等于:

age = 18
if age > 18:
  print('Very young!')

1.1.4、检查多个条件

有时需要检查多个条件,都为true用(and)执行,只要一个为true用(or)执行。

age_0 = 22
age_1 = 18
age = 20
if (age_1 > age) or (age < age_0):
    print(age)
    
20

1.1.5、检查特定值是否在列表中

检查一个值是否存在列表中时,可以采用成员操作符(in 、not in)

a = [1, 2, 3, 4, 5]
b = [6]
if b not in a:      # 也可以用in
    print('I Love You!')
else:
    pass
I Love You!

1.2、简单的if语句

if condition_test:

​ do something

一个简单的if语句,只有一个测试和一个操作,如果条件为真则执行缩进后的代码块。

1.2.1、if-else 语句

条件测试通过执行if 后的代码块,否则执行else 后的代码块

1.2.2、if-elif-else 结构

有时,条件测试有超过2个的情形,那么if-elif-else结构就可以帮助实现,它可以无限测试:

age = 12
if age < 4:
    price = 0
elif 4 < age < 18:
    price = 5
else:
    price = 10

print('Your admission cost is $' + str(price) + '.')

Your admission cost is $5.

1.2.3、省略else 代码块

python并不要求if-elif后必须有else代码块,有些情况很有用,但是有些情况使用elif语句处理特定情形更清晰,只要不满足if和elif条件,就执行else语句,有可能引入无效甚至恶意的数据。

age = 12
if age < 4:
    price = 0
elif 4 < age < 18:
    price = 5
elif 18 < age < 65:
    price = 10
elif age >= 65:
    price = 5

print('Your admission cost is $' + str(price) + '.')

1.2.4、测试多个条件

if-elif-else 功能强大,但只能满足一个条件,如果需要许多条件都符合,则不适用。

如:要判断顾客点的2种披萨配料是否都在列表中,显然用if-elif-else结构并不适用,此时,多个条件测试正好可以实现。

# 三个条件独立测试,互不影响
requested_toopings = ['mushrooms', 'extra cheese']

if 'mushrooms' in requested_toopings:
    print('Adding mushrooms.')

if 'pepperoni' in requested_toopings:
    print('Adding pepperoni.')

if 'extra cheese' in requested_toopings:
    print('Adding extra cheese.')

print('\nFinished making your pizza!')

Adding mushrooms.
Adding extra cheese.

Finished making your pizza!

1.3、使用if 语句处理列表

1.3.1、检查特殊元素

如一个列表中包含制作披萨的配料,顾客在点某种配料时,发现店里已经没有了,那么检查特殊情况就显得很重要了。

# 三种披萨配料存储在变量requseted——tooping中
requested_toopings = ['mushrooms', 'green peppers', 'extra cheese']

for requested_tooping in requested_toopings:
   print('Adding ' + requested_tooping + '.')
print('\nFinished making your pizza!')


# 当青椒‘green peppers’没有时
requested_toopings = ['mushrooms', 'green peppers', 'extra cheese']

for requested_tooping in requested_toopings:
    if requested_tooping == 'green peppers':  # 当青椒‘green peppers’没有时,告知客户没有了
        print('Sorry, we are out of green peppers right now.')
    else:
        print('Adding ' + requested_tooping + '.')
print('\nFinished making your pizza!')

1.3.2、确定列表是否为空

一个列表,在if语句判断条件时,如果列表名作为条件表达式,列表不为空,返回True,否则返回False。

# 在制作披萨前检查顾客的配料列表是否为空,空的就问顾客是否要点披萨,不为空则按照之前的方式制作披萨
requested_toopings = []

if requested_toopings:     # 判断列表是否为空,不为空执行下列语句
  for requested_tooping in requested_toopings:
    print('Adding ' + requested_tooping + '.')
   print('\nFinished making your pizza!')
else:                                        # 列表为空执行
  print('Are you sure you want a plain pizza?')
  
Are you sure you want a plain pizza?
  

1.3.3、使用多个列表

有时顾客的要求五花八门,我们要先检查顾客点的配料的列表是否在店里配料列表里,再进行后续操作。

available_tooping = ['mushrooms', 'olives', 'green peppers', 'pepperoni', 'pineapple', 'extra cheese']      # 店里披萨配料列表
requested_toopings = ['mushrooms', 'french fries', 'extra cheese']  # 顾客点的配料列表

for requested_tooping in requested_toopings:   # 遍历顾客配料列表
    if requested_tooping in available_tooping:    # 如果配料在店里配料列表中则执行如下操作,否则执行else语句。
        print('Adding ' + requested_tooping + '.')

    else:
        print("Sorry, we don't have " + requested_tooping + '.')
print('\nFinished making your pizza!')

练习题

# 创建一个至少包含5个用户名的列表(current_users)再创建一个包含5个用户名的新列表(new_users),确保其中一两个在第一个列表中,遍历new_users,检查其中的用户名是否已经使用过,如果是打印已经被使用,否则打印未被使用,确保比较时不区分大小写,‘john’被使用,应拒绝‘jOHn’
current_users = ['eric', 'willie', 'admin', 'erin', 'Ever']
new_users = ['sarah', 'Willie', 'PHIL', 'ever', 'Iona']

current_users_lower = [user.lower() for user in current_users]  # 把第一个列表中的元素变成小写

for new_user in new_users:
    if new_user.lower() in current_users_lower:   # 判断第二个列表中元素小写后是否在第一个列表中的小写列表中
        print('Please enter another user name!')

    else:
        print('This username is not used!')
        
This username is not used!
Please enter another user name!
This username is not used!
Please enter another user name!
This username is not used!

你可能感兴趣的:(十四、if 语句)