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!