每篇 Python 都以 Shell 做对比开头,但是确实这样学起来对于我来说是简单也快速了很多,同概念的内容可以加快理解,只是语言格式不同,

while 循环一般都是用数字做比较来控制循环的运行。

while 语法

num = 1
while num <= 5:
    print("这是第 " + str(num) + " 次循环")
    num+=1
---
# 运行结果
这是第 1 次循环
这是第 2 次循环
这是第 3 次循环
这是第 4 次循环
这是第 5 次循环

while 结合 input()

可以让用户选择何时退出循环,可以想象场景是一个游戏,用户想要继续玩就继续循环,想要退出就输入指定字符串退出

print_info = "输入 quit 退出程序,否则您可以输入任何您想输入的内容:"
message = ""

while message != 'quit':
    message = input(print_info)
    if message != 'quit':
        print(message)
---
# 运行结果
输入 quit 退出程序,否则您可以输入任何您想输入的内容:123
123
输入 quit 退出程序,否则您可以输入任何您想输入的内容:!@%
!@%
输入 quit 退出程序,否则您可以输入任何您想输入的内容:Hello World!
Hello World!
输入 quit 退出程序,否则您可以输入任何您想输入的内容:quit

一开始如果不定义,message 的空变量,程序会报错,因为一开始 message 没有值的话,会导致第一次 while 循环时无法判断不存在的变量

中间如果不加入 if 语句,程序会将 quit 也打印出来。

while 使用标志

在很多场景中,程序也会因为其他的一系列意外事件导致程序异常退出,要判断这么多的时间,要写的判断也相当复杂了

可以通过定义一个变量来显示程序的状态,这个变量就叫标志, 标志为 True 时,程序运行,反之,程序停止,这样 while 只需要判断标志变量即可

print_info = "输入 quit 退出程序,否则您可以输入任何您想输入的内容:"
tag = True

while tag:
    message = input(print_info)
    if message == 'quit':
        tag = False
    else:
        print(message)
---
# 运行结果
输入 quit 退出程序,否则您可以输入任何您想输入的内容:ads
ads
输入 quit 退出程序,否则您可以输入任何您想输入的内容:asdf
asdf
输入 quit 退出程序,否则您可以输入任何您想输入的内容:quit

while 循环控制

在无限循环(while True)的场景中,适用于退出程序。无限循环这里也不过多解释,我还是从 Shell 学过来的~

循环控制适用于 Python 中的所有循环语句,已知的 forwhile

break 退出循环

使用 break 控制循环,break 会直接中断并退出循环。

print_info = "请输入你最喜欢的城市(输入quit将退出程序): "

while True:
    city = input(print_info)
    if city == "quit":
        break
    else:
        print("我最喜欢的城市是" + city + "!\n")
---
# 运行结果
请输入你最喜欢的城市(输入quit将退出程序): 四川达州
我最喜欢的城市是四川达州!

请输入你最喜欢的城市(输入quit将退出程序): Beijing
我最喜欢的城市是Beijing!

请输入你最喜欢的城市(输入quit将退出程序): quit

continue 跳过循环

使用 continue 控制循环,会跳过 continue 之后当次循环的后续操作,继续进行下一次循环

打印数字比较直观的看到 continue 的功能

num = 0
while num < 10:
    num += 1  
    if num == 5:
        continue
    print(num)
---
# 运行结果
1
2
3
4
6
7
8
9
10

以上示例中并没有打印数字 5,5后面的数字也依然打印输出了,这就是 continue 的功能。

练习

编写一个循环,提示用户输入一系列的披萨配料,并在用户输入 quit 时退出循环

print(,end=’’)表示打印结果后不换行

print_info = "请输入你需要的披萨配料(输入quit将退出程序): "
Ingredients = []
while True:
    pizza = input(print_info)
    if pizza == 'quit':
        break
    print("已经将 " + pizza + " 加入您的配料表")
    Ingredients.append(pizza)

print("\n请检查您的pizza配料表,分别是:", end='')
for Ingred in Ingredients:
    print(Ingred, end=' ')
---
# 运行结果
请输入你需要的披萨配料(输入quit将退出程序): 盐 
已经将 盐 加入您的配料表
请输入你需要的披萨配料(输入quit将退出程序): 奶油
已经将 奶油 加入您的配料表
请输入你需要的披萨配料(输入quit将退出程序): 榴莲
已经将 榴莲 加入您的配料表
请输入你需要的披萨配料(输入quit将退出程序): quit

请检查您的pizza配料表,分别是:盐 奶油 榴莲

电影院根据年龄不同,票价不同,写一个循环,用来告诉观众各个年龄段的票价

# 3岁以下免费
# 3-12岁 $10
# 12岁以上 $15
age_info = "请输入你想要知道的年龄段,你将会获得对应的票价:"

active = True
while active:
    age_info = int(input(age_info))
    if age_info < 3:
        print("您好," + str(age_info) + "岁观影是免费的!")
    elif 12 >= age_info >= 3:
        print("您好," + str(age_info) + "岁对应的票价为 $10")
    elif age_info > 12:
        print("您好," + str(age_info) + "岁对应的票价为 $15")
    active = False
---
# 运行多次结果
请输入你想要知道的年龄段,你将会获得对应的票价:2
您好,2岁观影是免费的!

请输入你想要知道的年龄段,你将会获得对应的票价:3
您好,3岁对应的票价为 $10

请输入你想要知道的年龄段,你将会获得对应的票价:12
您好,12岁对应的票价为 $10

请输入你想要知道的年龄段,你将会获得对应的票价:13
您好,13岁对应的票价为 $15

请输入你想要知道的年龄段,你将会获得对应的票价:56
您好,56岁对应的票价为 $15

while 循环处理列表

for 循环是一种遍历列表的有效方式,但在 for 循环中不应该修改列表,否则将导致 Python 难以跟踪其中的元素。要在遍历列表的同时对其进行修改,可使用 while 循环。

在真实场景中,一个列表中包含了注册未验证的用户,验证后存入另一个列表

un_users = ['feiyi', 'mupei', 'jinfeng']
in_users = []

while un_users:
    # 使用函数pop()弹出列表元素
    current_user = un_users.pop()
    print('验证用户:' + current_user.title())
    in_users.append(current_user)

print('\n已验证的用户如下:')
for user in in_users:
    print(user.title())
---
# 运行多次结果
验证用户:Jinfeng
验证用户:Mupei
验证用户:Feiyi

已验证的用户如下:
Jinfeng
Mupei
Feiyi

通过 while 循环删除列表中特定的值

适用于列表中有大量重复值时使用

pets = ['dog', 'cat', 'fish', 'cat', 'rabbit']
print(pets)

while 'cat' in pets:
    pets.remove('cat')

print(pets)
---
# 运行多次结果
['dog', 'cat', 'fish', 'cat', 'rabbit']
['dog', 'fish', 'rabbit']

while 循环处理字典

通过 while 循环的方式做一个简单的调查问卷

# 定义一个空字典
responses = {}

# 设置一个标志,用来结束循环
active = True

while active:
    name = input('请输入你的名字:')
    response = input("请告诉我你最喜欢的城市:")
    responses[name] = response

    repeat = input("还要继续调查下一个人吗(yes/no)")
    if repeat == 'no':
        active = False

print("\n------调查结果------")
for name,response in responses.items():
    print(name + ' 最喜欢的城市是 ' + response)
---
# 运行多次结果
请输入你的名字:FeiYi
请告诉我你最喜欢的城市:四川达州
还要继续调查下一个人吗(yes/no)yes
请输入你的名字:MuPei
请告诉我你最喜欢的城市:四川达州
还要继续调查下一个人吗(yes/no)no

------调查结果------
FeiYi 最喜欢的城市是 四川达州
MuPei 最喜欢的城市是 四川达州

练习

定义一个列表 travel_cities,其中包含了城市的名字,用来计划旅游的城市。定义另一个列表 cities_visited,依次去过的城市存入该列表。

travel_cities = ['西安', '达州', '北京', '云南']
cities_visited = []

while travel_cities:
    current_city = travel_cities.pop()
    print('我已经去过 ' + current_city + ' 了')
    cities_visited.append(current_city)
---
# 运行多次结果
我已经去过 云南 了
我已经去过 北京 了
我已经去过 达州 了
我已经去过 西安 了

基于上题,西安一共去了 2 次,以后不再去了,将西安删除

travel_cities = ['西安', '达州', '西安', '北京', '云南']
print('西安已经去过多次,以后不去了!')

while '西安' in travel_cities:
    travel_cities.remove('西安')

print(travel_cities)
---
# 运行多次结果
西安已经去过多次,以后不去了!
['达州', '北京', '云南']

while 循环字典的练习,就以上那个够了。

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0