每条 if 语句的核心都是一个值为True或False的表达式,这种表达式也称为条件测试
if 和 else 语句以及各自的缩进部分都是一个代码块
(1)if 语句
条件测试结果为True,,执行 if 语句后面所有缩进的代码块,否则忽略他们
age = 19
if age >= 18:
print("you are enough to vote!")
输出:you are enough to vote!
(2)if - else 语句
条件测试通过后执行 if 语句后面缩进的代码块,不通过时执行 else 语句后面缩进的代码块
age = 14
if age >= 18:
print("you are enough to vote!")
else:
print("Sorry,you are too young to vote!")
输出:Sorry,you are too young to vote!
(3)if - elif - else 语句
elif 的应用场景:同时判断多个条件,所有的条件是平级的,可以根据需要使用任意数量的 elif 代码块,同时 if - elif - else 语句结构中else代码块也可以省略。
if - elif - else 语句结构仅适合于只有一个条件满足的情况
age = 14
if age < 4:
print("your admisson cost is $0!")
elif age < 18:
print("your admisson cost is $10!")
else:
print("your admission cost is $20!")
输出:your admission cost is $10!
elif 代码行其实是另一个if测试,仅在前面的测试未通过时才会执行这行代码,elif代码行测试通过后,会跳过余下的else语句代码块。
(4) if 嵌套
if 语句可以用来测试多个条件
requested_topping = ['mushrooms','extra cheese']
if 'mushrooms' in requested_topping:
print("Adding mushrooms.")
if 'pepperoni' in requested_topping:
print("Adding pepperoni.")
if 'extra cheese' in requested_topping:
print("Adding extra cheese.")
输出:Adding mushrooms.
Adding extra cheese.
if 嵌套语句是在之前条件满足的情况下,再增加额外的判断
age = 14
if age <= 18:
if age > 3:
print("you are enough to vote!")
输出:you are enough to vote!
循环:从0开始,让特定代码重复执行
1、for 循环
针对集合中的每个元素都执行一个代码块,是一种遍历列表的有效方式。
for 循环操作列表
2、while循环
最常用的场景就是让指定的代码按照制定的次数重复执行
while 条件(判断 计数器 是否达到 目标次数):
条件满足时,做的事情1
条件满足时,做的事情2
…
处理条件(计数器 + 1)
break和continue:是专门在循环中使用的关键字
break 某一条件满足时,退出循环,不再执行后续重复的代码
prompt = "\nPlease enter the name of a city you have visited:"
prompt += "\n(Enter 'quit' when you are finished.)"
while True:
city = input(prompt)
if city == 'quit':
break
else:
print(f"I'd love to go to {city.title()}!")
输出:
Please enter the name of a city you have visited:
(Enter 'quit' when you are finished.)Beijing
I'd love to go to Beijing!
Please enter the name of a city you have visited:
(Enter 'quit' when you are finished.)quit
continue 某一条件满足时,不执行后续重复的代码
要返回循环开头,并根据条件测试结果决定是否继续执行循环,就可以使用continue语句
current_number = 0
while current_number < 10:
current_number += 1
if current_number %2 == 0:
continue //偶数时跳出该循环,即不输出
print(current_number)
输出:
1
3
5
7
9
break和continue只针对当前所在循环有效,每个循环都必须要有停止运行的条件,在写循环语句时务必对每个循环进行测试,避免写出死循环(程序无休止的运行下去),如果陷入无限循环,可以按Ctrl+C,也可以通过关闭程序输出的终端窗口。
循环嵌套:
while嵌套就是:while里面还有while
3、while 循环处理列表和字典
while 循环可以在遍历列表的同时对其进行修改
(1)列表之间移动元素
# 首先,创建一个待验证用户列表
# 和一个用于存储已验证用户的空列表
unconfirmed_users = ['alice','brian','candace']
confirmed_users = []
# 验证每个用户,直到没有未验证用户为止
# 将每个经过验证的用户都移到已验证用户列表中
while unconfirmed_users:
current_user = unconfirmed_users.pop() # 方法pop()以每次一个的方式从列表unconfirmed_users末尾删除未验证的用户,最先删除的是Candace,其名字首先被赋给变量current_user
print(f"Verifying user:{current_user.title()}")
confirmed_users.append(current_user)
# 显示所有已验证的用户
print("\nThe following users have been confirmed:")
for confirmed_user in confirmed_users:
print(confirmed_user.title())
输出:
Verifying user:Candace
Verifying user:Brian
Verifying user:Alice
The following users have been confirmed:
Candace
Brian
Alice
(2)删除为特定值的所有列表元素
使用函数remove()来删除列表中的特定值
pets = ['dog','cat','dog','goldfish','rabbit','cat']
print(pets)
while 'cat' in pets:
pets.remove('cat')
print(pets)
输出:
['dog', 'cat', 'dog', 'goldfish', 'rabbit', 'cat']
['dog', 'dog', 'goldfish', 'rabbit']
(3)使用用户来填充字典
responses = {} #定义一个空字典
# 设置一个标志,指出调查是否继续
polling_active = True
while polling_active:
# 提示输入被调查者的名字和回答
name = input("\nWhat is your name?")
response = input("Which mountain would you like to climb someday?")
# 将回答存储在字典中
responses[name] = response
# 看看是否还有人要参与调查
repeat = input("Would you like to let another person respond?(Yes/No)")
if repeat == 'No':
polling_active = False
# 调查结束,显示结果
print("\n--- Poll Results ---")
for name,response in responses.item():
print(f"{name} would like to climb {response}.")
输出:
What is your name?KK
Which mountain would you like to climb someday?NN
Would you like to let another person respond?(Yes/No)Yes
What is your name?MM
Which mountain would you like to climb someday?LO
Would you like to let another person respond?(Yes/No)No
--- Poll Results ---
KK would like to climb NN.
MM would like to climb LO.