用户输入和while循环
用户输入
| 12
 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循环的含义为直到不满足其后的条件,结束循环。第一个不满足条件的值不进入循环。
| 12
 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
 
 | 
| 12
 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)
在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否出活动状态。这个变量被称作标志。
| 12
 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” 在循环开始前就已经成立了,并且并没有再次出现在循环中,以至于成为了一个无限循环。
来看看书中的代码:
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | active = True
 while active:
 message = input("your name:")
 
 if message == "quit":
 active = False
 else:
 print(message)
 
 | 
从行数上来看,它也就是比我少一两行而已。
但是我用了两个判断,范例用了一个。
退出循环(break)
| 12
 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以内的奇数时。
| 12
 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循环,在验证用户的同时将其从未验证用户列表中提取出来,再将其添加到已验证列表。
| 12
 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循环中使用判断语句,但是看了范例才知道,没那么麻烦。
| 12
 3
 4
 5
 6
 7
 
 | pets = ["dog","cat","dog","goldfish","cat","rabbit"]print(pets)
 
 while 'cat' in pets:
 pets.remove('cat')
 
 print(pets)
 
 | 
使用用户输入来填充字典
| 12
 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循环进行字典的交互式内容添加。