while 循环
1.while()循环
for循环针对集合中的每个元素都执行一个代码块,而while循环不断运行,直到指定的条件不满足为止
prompt = "\n Tell me something, and I will repeat it back to you: "
prompt += "\nEnter 'quit' to end the program. "
message = ''
while message != 'quit':
message = input(prompt)
if message != 'quit':
print(message)
2.标志
若有很多复杂的情况导致程序停止运行。在这种情况下应该设置一个变量,用于判断整个程序是否处于活动状态。这个变量称为标志(flag), 可以让程序在标志位True时继续运行。并在任何时间导致标志的值为false时停止运行。这样在while语句中只需要检查一个条件
active = True
#message = input(prompt)#将input()语句放在while循环外,则会陷入死循环,在执行while的过程中不会停下来给你输入别的
#所以这句input必须放在while内部
while active:
message = input(prompt)
if message == 'quit':
active = False;
else:
print(message)
3.break 用法
立即退出循环,不再执行循环中余下的代码
prompt = "\nPlease enter a city name which you have visited: "
prompt += "\nEnter 'quit' ,if you want to stop"
active = True
while active:
message = input(prompt)
if message == 'quit':
break
else:
print(message)
4.continue用法
要返回循环开头,并根据测试结果决定是否继续执行循环,可以使用continue语句
# prompt = "Please enter a number,"
# 从1数到10,但只打印其中奇数
prompt = "Enter 'quit', you will stop this program. "
active = True
num=0
while num <= 10:
if num%2 != 0:
print(num)
num +=1;
current_number = 0
while current_number < 10:
current_number += 1
if current_number % 2 == 0:
continue
print(current_number)
5.避免死循环
每个while循环都必须有停止运行的途径,这样才不会没完没了地执行下去。
######################-----practice-----############################
#提示用户输入披萨配料,并在输入quit后结束循环
#每当用户输入一种配料后,都打印一条消息
prompt = "\nPlease input Pizza ingredients"
prompt += "\nIf you want to stop input, please input quit. "
active = True
while active:
ingredients = input(prompt)
if ingredients == 'quit':
break
else:
print(f"Ok, you like {ingredients}, I will use it to make your pizza!")
# 根据观众年龄收取不同的票价
# < 3 free
# 3~12 10 dollar
# >12 15 dollar
prompt = "How old are you?"
prompt += "Please input your age: "
active = True
while active:
age = input(prompt)
if age == "quit":
break;
else:
age = int(age)
if age < 3:
print("Free")
elif age >= 3 and age <= 12:
print("Charge you 5 dollars")
elif age > 12 and age <= 120:
print("Charge you 15 dollars")
else:
print("please re-enter!")
6.使用while来处理列表和字典
将while和字典及列表结合起来使用,可存储并组织大量输入
unconfirmed_users = ['alice','brian','candace']
confirmed_users = []
while unconfirmed_users:
current_user = unconfirmed_users.pop()
print(f"Verifying user: {current_user}")
confirmed_users.append(current_user)
print("\nThe following users have been confirmed")
for confirmed_user in confirmed_users:
print(confirmed_user.title())
7.删除为特定值的所有列表元素
remove()函数可用于删除列表中的特定值,但若列表中包含的特定值有多个,是重复的。就需要用到while
pets = ['cat','dogs','dog','cat','dog','cats','cat']
while 'cat' in pets:
pets.remove('cat')
print(pets)
8.使用用户输入来填充字典
可使用while循环输入任意多的信息
####字典嵌套存储用户输入信息
responses = {}
polling_active = True
while polling_active:
name = input("\nWhat is your name? ")
age = int(input("\nHow old are you? "))
response = input("\nWhich mountain would you like to climb someday? ")
temp = {}
temp['age'] = age
temp['response'] = response
responses[name] = temp
# name = {}
# name['response'] = response #报错
# name['age'] = age
repeat = input("Would you like to let another person respond? y/n ")
if repeat == 'n':
polling_active = False
print("----Polling Results----")
print(responses)#{'yu': {'age': 32, 'response': 'tai'}, 'zhu': {'age': 45, 'response': 'tai'}}
#字典简单存储用户信息
responses = {}
polling_active = True
while polling_active:
name = input("\nWhat is your name? ")
age = int(input("\nHow old are you? "))
response = input("\nWhich mountain would you like to climb someday? ")
responses[name] = response
repeat = input("Would you like to let another person respond? y/n ")
if repeat == 'n':
polling_active = False
print("\n---poll resutls ----")
print(responses)#{'wj': 'tai', 'yu': 'tai'}
for name , response in responses.items():
print(f"{name} wants to climb {response}")