用户输入和while循环
用户输入
1 2 3 4 5
| name = input("your name:") print("Hi, " + name + "!") -------------------------- your name: john Hi john!
|
input()
在刚开始学习python时就在使用了,不再多讲。
如果需要输入的如 age 之类的数值,input函数会自动转换为字符串,
需要使用int()
函数转换为数值。
while循环
一般来说,循环有两类:for循环和while循环。判断语句就是if判断。
for循环以及其与if判断的结合,我们已经讲过并且一直在使用。
本章介绍while循环,及其适用场景。
基础循环
while循环的含义为直到不满足其后的条件,结束循环。第一个不满足条件的值不进入循环。
1 2 3 4 5 6 7 8 9 10 11 12
| current_num = 1
while current_num <= 5: print(current_num) current_num += 1
1 2 3 4 5
|
1 2 3 4 5 6 7 8 9
| tip1 = 'what you sade, what I say' tip1 += '\nif you want to leave, enter "quit"'
mess = "" while mess != 'quit': mess = input(tip1)
if mess != 'quit': print(mess)
|
这里面有一些小细节:
+=
代表的含义,将自己与其后的数据相加并重新赋值给自己
- 首先定义一个变量才能进入循环,即使这个变量是个空字符串
- 在很多情况下
!=
比=
用的还要多
使用标志(active)
在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否出活动状态。这个变量被称作标志。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| message = " "
if message != "quit": active = True
while active: message = input("your name:")
if message != "quit": print(message) else: active = Fals
|
上面的代码,反映出自己对while标志和多情形判断的理解不够。
while 循环的条件为 active,但是 “active = ture” 在循环开始前就已经成立了,并且并没有再次出现在循环中,以至于成为了一个无限循环。
来看看书中的代码:
1 2 3 4 5 6 7 8 9
| active = True
while active: message = input("your name:")
if message == "quit": active = False else: print(message)
|
从行数上来看,它也就是比我少一两行而已。
但是我用了两个判断,范例用了一个。
退出循环(break)
1 2 3 4 5 6 7 8 9 10
| 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("I'd love to go to " + city.title() + "!")
|
while true
表示循环将不断运行,一直满足条件。
- 直到遇见
break
语句,将结束运行。
- 在任何
python
循环中都可以使用break
语句,无论for循环
还是while循环
继续循环(continue)
有时,我们需要让循环在满足一些条件时,不打印任何信息,然后返回循环开头,重新进入循环。这时可以用到continue
。
比如只打印10以内的奇数时。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| x = 0
while x <= 10: x += 1 if x % 2 != 0: print(x)
x = 0
while x<= 10: x += 1 if x%2 == 0: continue
print(x)
|
避免无限循环(CTRL+C)
有时在使用循环时,由于失误会造成无限循环。
我们需要极力避免这种情况,但是若真的发生,可用以下两种方法:
- CTRL+C强制结束终端运行
- 关闭显示程序输出的终端窗口
使用循环处理列表和字典
for循环是一种遍历列表的有效方式,但在for循环中不应该修改列表,否则将导致python难以跟踪其中的元素。
要在遍历列表的同时对其进行修改,可使用while循环。
在列表之间移动元素
假设有一个列表,其中包含新注册但还未验证的网站用户;验证这些用户后,如何将他们移到另外一个已验证用户列表中呢?一种方法是使用一个while循环,在验证用户的同时将其从未验证用户列表中提取出来,再将其添加到已验证列表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
unconfirmed_users = ["John","chen","leon"] confirmed_users = []
while unconfirmed_users: current_user = unconfirmed_users.pop()
print("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())
|
删除包含特定值的所有列表元素
一开始,我以为只是在while循环中使用判断语句,但是看了范例才知道,没那么麻烦。
1 2 3 4 5 6 7
| pets = ["dog","cat","dog","goldfish","cat","rabbit"] print(pets)
while 'cat' in pets: pets.remove('cat')
print(pets)
|
使用用户输入来填充字典
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
responses = {}
polling_active = True
while polling_active: name = input("\nWhat's your name?") response = input("How old are you?")
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, respond in responses.items(): print(name + ':' + respond)
|
小结
本节课内容较多,但主要还是在于while循环。
循环的基本知识、标志、结束循环、继续循环,
以及如何使用while循环对列表进行增删修改,
和如何使用while循环进行字典的交互式内容添加。