python基础6

用户输入和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
# 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
# 不使用 'continue'
x = 0

while x <= 10:
x += 1
if x % 2 != 0:
print(x)

# 使用'continue'

x = 0

while x<= 10:
x += 1
if x%2 == 0:
continue

print(x)

避免无限循环(CTRL+C)

有时在使用循环时,由于失误会造成无限循环。

我们需要极力避免这种情况,但是若真的发生,可用以下两种方法:

  1. CTRL+C强制结束终端运行
  2. 关闭显示程序输出的终端窗口

使用循环处理列表和字典

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循环进行字典的交互式内容添加。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!