input() 函数让程序暂停运⾏,等待⽤户输⼊⼀些⽂本。获取⽤户输⼊ 后,Python 将其赋给⼀个变量,以便使⽤。
message = input("Tell me something, and I will repeat it back to you:
")
print(message)
input() 函数接受⼀个参数,即要向⽤户显⽰的提⽰(prompt),让⽤户 知道该输⼊什么样的信息。
prompt = "If you share your name, we can personalize the messages you
see."
prompt += "\nWhat is your first name? "
name = input(prompt)
print(f"\nHello, {name}!")
>>> age = input("How old are you? ")
How old are you? 21
>>> age >= 18
Traceback (most recent call last):
File "", line 1, in
TypeError: '>=' not supported between instances of 'str' and 'int'
Python 报错,因为它⽆法将 字符串和整数进⾏⽐较:不能将赋给 age 的字符串 '21' 与数值 18 进⾏ ⽐较
>>> age = input("How old are you? ")
How old are you? 21
>>> age = int(age)
>>> age >= 18
True
Python 将这个数解读为字符串,但随后 int() 将这个字符串转换成了数值表⽰
求模运算符(%)是个很有⽤的⼯具,它将两个数相除 并返回余数
>>> 4 % 3
1
>>> 5 % 3
2
>>> 6 % 3
0
>>> 7 % 3
1
可利以来判断⼀个数是奇数还是偶数:
for 循环⽤于针对集合中的每个元素执⾏⼀个代码块,⽽ while 循环则不 断地运⾏,直到指定的条件不再满⾜为⽌。
可以使⽤ while 循环来数数。例如,下⾯的 while 循环从 1 数到 5:
current_number = 1
while current_number <= 5:
print(current_number)
current_number += 1
可以使⽤ while 循环让程序在⽤户愿意时不断地运⾏们在其中定义了⼀个退出值,只要⽤户输⼊的不是这个 值,程序就将⼀直运⾏:
prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
message = ""
while message != 'quit':
message = input(prompt)
print(message)
在更 复杂的程序中,有很多不同的事件会导致程序停⽌运⾏。
在要求满⾜很多条件才继续运⾏的程序中,可定义⼀个变量,⽤于判断整 个程序是否处于活动状态。这个变量称为标志(flag),充当程序的交通信 号灯。
添加⼀个标志active(可以给它指定任何名称),⽤于判断程序是否应继续运⾏:
prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
active = True
while active:
message = input(prompt)
if message == 'quit':
active = False
else:
print(message)
在复杂的程序(⽐如有很多事件会导致 程序停⽌运⾏的游戏)中,标志很有⽤:在任意⼀个事件导致活动标志变 成 False 时,主游戏循环将退出。
想⽴即退出 while 循环,不再运⾏循环中 余下的代码,可使⽤ break 语句。
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(f"I'd love to go to {city.title()}!")
以 while True 打头的循环将不断运行,直到遇到break语句。
注意:在所有 Python 循环中都可使⽤ break 语句。例如,可使⽤
break 语句来退出遍历列表或字典的 for 循环。
要返回循环开头,并根据条件测试的结果决定是否继续执⾏循环,可使⽤ continue 语句。
current_number = 0
while current_number < 10:
current_number += 1
if current_number % 2 == 0:
continue
print(current_number)
if 语句检查 current_number 与 2 的 求模运算结果。如果结果为 0(意味着current_number 可被 2 整除), 就执⾏ continue 语句,让 Python 忽略余下的代码,并返回循环的开头。
每个 while 循环都必须有结束运⾏的途径,这样才不会没完没了地执⾏下 去。
x = 1
while x <= 5:
print(x)
x += 1
如果像下⾯这样不⼩⼼遗漏了代码⾏ x += 1,这个循环将没完没了地运 ⾏:
# 这个循环将没完没了地运⾏!
x = 1
while x <= 5:
print(x)
通过将 while 循环与列表和字典结合起来使⽤,可收 集、存储并组织⼤量的输⼊,供以后查看和使⽤。
假设有⼀个列表包含新注册但还未验证的⽹站⽤户。验证这些⽤户后,如
何将他们移到已验证⽤户列表中呢?
⼀种办法是使⽤⼀个 while 循环,
在 验证⽤户的同时将其从未验证⽤户列表中提取出来,再将其加⼊已验证⽤
户列表。代码可能类似于下⾯这样:
# ⾸先,创建⼀个待验证⽤户列表
# 和⼀个⽤于存储已验证⽤户的空列表
unconfirmed_users = ['alice', 'brian', 'candace']
confirmed_users = []
# 验证每个⽤户,直到没有未验证⽤户为⽌
# 将每个经过验证的⽤户都移到已验证⽤户列表中
while unconfirmed_users:
current_user = unconfirmed_users.pop()
print(f"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())
我们使⽤ remove() 函数来删除列表中的特定值。这之所以
可⾏,是因为要删除的值在列表中只出现了⼀次。
假设有⼀个宠物列表,其中包含多个值为 'cat' 的元素。
要删除所有这些 元素,可不断运⾏⼀个 while 循环,直到列表中不再包含值 'cat',
如下 所⽰:
pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
print(pets)
while 'cat' in pets:
pets.remove('cat')
print(pets)
⾸先创建⼀个列表,其中包含多个值为 'cat' 的元素。打印这个列表后, Python 进⼊ while 循环,因为它发现 'cat' 在列表中⾄少出现了⼀次。 进⼊这个循环后,Python 删除第⼀个 'cat' 并返回 while 代码⾏,然后 发现 'cat' 还在列表中,因此再次进⼊循环。
可以使⽤ while 循环提⽰⽤户输⼊任意多的信息。下⾯创建⼀个调查程序,其中的循环在每次执⾏时都提⽰输⼊被调查者的名字和回答。
responses = {}
# 设置⼀个标志,指出调查是否继续
polling_active = True
while polling_active:
# 提⽰输⼊被调查者的名字和回答
name = input("\nWhat is your name? ")
response = input("Which mountain would you like to climb someday?
")
# 将回答存储在字典中
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, response in responses.items():
print(f"{name} would like to climb {response}.")
这个程序⾸先定义了⼀个空字典(responses),并设置了⼀个标志 (polling_active)⽤于指出调查是否继续。只要 polling_active 为 True,Python 就运⾏ while 循环中的代码。