文章目录
1. 函数input()的工作原理
函数input()让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其存储在一个变量中,方便使用。
message = input("Enter a message: ")
print(message)
input() 函数接受一个参数,即要向用户显示的提示(prompt)。
在这个示例中,提示为 "Enter a message: "。
用户输入的文本将存储在变量 message 中。
最后,使用 print() 函数将用户输入的文本打印出来。
编写清晰的提示
当使用 input()函数时,应该指定清晰易懂的提示,准确地指出希望用户提供什么样的信息。
name = input("Please enter your name: ")
print(f"\nHello, {name}!")
通过在提示末尾添加冒号和一个空格,提示与用户输入分开,让用户清楚地知道其输入始于何处。
有时候提示会超过一行。在这种情况下,可以先将提示赋给一个变量。再将这个变量传递给 input()函数。
prompt = "If you tell us who you are, we can personalize the messages you see."
prompt += "\nWhat is your first name? "
name = input(prompt)
print(f"\nHello, {name}!")
在第二行中,使用了 += 在赋给变量prompt的字符串末尾附加了一个字符串。
使用 int()来获取数值输入
使用 input()函数时,Python 会将用户输入解读为字符串。
>>> age = input("How old are you? ")
How old are you? 21
>>> age
'21'
在这个示例中,用户输入的是 21,但是 Python 将其解读为字符串 ‘21’。
如果要将输入的值作为数值使用,就必须使用函数 int()将其转换为整数。
>>> age = input("How old are you? ")
How old are you? 21
>>> age = int(age)
>>> age >= 18
True
在这个示例中,用户输入的是 21,但是 Python 将其转换为整数 21。
求摸运算符
求模运算符(%)将两个数相除并返回余数。
>>> 4 % 3
1
>>> 5 % 3
2
>>> 6 % 3
0
>>> 7 % 3
1
如果一个数可被另一个数整除,余数就为 0,因此求模运算符将返回 0。
可以利用这一点来判断一个数时奇数还是偶数
number = input("Please enter your number,and I will tell you if it is even or odd: ")
number = int(number)
# 如果一个数和 2 执行求摸运算的结果为 0,即 number % 2 == 0,那么这个数就是偶数;
if number % 2 == 0:
print(f"\nThe number {number} Even.")
else:
print(f"\nThe number {number} Odd.")
2. while 循环简介
for 循环用于针对集合中的每个元素的一个代码块,而 while 循环不断地运行,直到指定的条件不满足为止。
使用 while 循环
# 将 1赋给变量 current_number,指定从 1 开始数。
current_number = 1
# 只要 current_number的值小于或等于 5,就接着数。
while current_number <= 5:
# 循环打印代码 current_number的值,然后将 current_number的值加 1。
print(current_number)
current_number += 1
# 只要满足条件 current_number <= 5,Python就接着运行这个循环。
在这个示例中,变量 current_number 的值为 1。只要这个值小于或等于 5,Python 就接着运行 while 循环中的代码。
在每次执行 while 循环中的代码时,都将 current_number 的值加 1。
因此,这个循环将不断地运行,直到 current_number 的值大于 5。
让用户选择何时退出
可以使用 while 循环让程序在用户愿意时不断地运行。
# 定义一条提示消息,告诉用户有两个选择:要么输入一条消息,要么输入quit退出程序
prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
# 创建变量 message,用于存储用户输入的消息
message = ""
# 创建一个 while 循环,只要用户输入的消息不是 quit,就不断地提示用户输入消息
while message != "quit":
message = input(prompt)
print(message)
在这个示例中,我们定义了一条提示消息,告诉用户有两个选择:要么输入一条消息,要么输入 quit 退出程序。
我们创建了一个变量 message,用于存储用户输入的消息。
我们创建了一个 while 循环,只要用户输入的消息不是 quit,就不断地提示用户输入消息。
在每次循环中,我们将用户输入的消息存储在变量 message 中,并打印出来。
当用户输入 quit 时,循环结束,程序退出。
上面的程序美中不足的是,将单词‘quit’也作为一条消息打印了出来。使用是个简单的 if 测试。
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)
if message != "quit":
print(message)
使用标志
在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志(flag),充当程序的交通信号灯。
可以让程序在标志为 True 时继续运行,并在任何事件导致标志的值为 False 时让程序停止运行。
这样,在 while 语句中就只需要检查一个条件(标志的当前值是否为 True),从而提高了程序的效率。
prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
# 定义一个标志变量 active,用于控制循环是否继续运行。
active = True
while active:
message = input(prompt)
if message == "quit":
active = False
else:
print(message)
在这个示例中,我们定义了一个标志变量 active,用于控制循环是否继续运行。
我们创建了一个 while 循环,只要 active 的值为 True,就不断地提示用户输入消息。
在每次循环中,我们将用户输入的消息存储在变量 message 中,并检查它是否等于 quit。
如果用户输入了 quit,我们将 active 的值设置为 False,从而让循环停止运行。
否则,我们打印出用户输入的消息。
当用户输入 quit 时,循环结束,程序退出。
使用 break 退出循环
要立即退出 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 循环,它将不断地运行,直到用户输入 quit。
在每次循环中,我们提示用户输入一个城市的名称,并将用户输入的消息存储在变量 city 中。
如果用户输入了 quit,我们使用 break 语句退出循环。
否则,我们打印出一条消息,告诉用户我们将前往该城市。
当用户输入 quit 时,循环结束,程序退出。
在循环中使用 continue
要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用 continue 语句,它不像 break 语句那样不再执行余下的代码并退出整个循环。
current_number = 0
while current_number < 10:
current_number += 1
if current_number % 2 == 0:
continue
print(current_number)
在这个示例中,我们创建了一个 while 循环,它将不断地运行,直到 current_number 的值大于或等于 10。
在每次循环中,我们将 current_number 的值加 1。
然后,我们使用 if 语句检查 current_number 的值是否为偶数。
如果是偶数,我们使用 continue 语句跳过余下的代码,并返回到循环的开头。
否则,我们打印出 current_number 的值。
当 current_number 的值大于或等于 10 时,循环结束,程序退出。
避免无限循环
每个 while 循环都必须有停止运行的途径,这样才不会没完没了地执行下去。
x = 1
while x <= 5:
print(x)
在这个示例中,我们创建了一个 while 循环,它将不断地运行,直到 x 的值大于 5。
在每次循环中,我们将 x 的值加 1 (我们忘记了编写 x += 1 的代码进行操作 x 的值) ,并打印出 x 的值。
当 x 的值大于 5 时,循环结束,程序退出。
但是,如果我们忘记在循环中更新 x 的值,就会导致无限循环。
使用 while 循环处理列表和字典
要在遍历列表的同时修改,可以使用 while 循环。
通过将列表和 while 循环结合起来使用,可收集、存储并组织大量输入,供以后查看和显示。
在列表之间移动元素
假设有一个列表,其中包含新注册但还未验证的网站用户。
验证这些用户后,如何将他们移到另一个已验证用户列表中呢?
一种办法是使用一个 while 循环,在验证用户的同时将其从未验证用户列表中提取出来,再将其加入到另一个已验证用户列表中。
# 创建一个待验证用户列表
# 和一个用于存储已验证用户的空列表。
unconfirmed_users = ["alice", "brian", "candace"]
confirmed_users = []
# 验证每个用户,直到没有未验证用户为止。
# 将每个经过验证的列表都移到已验证用户列表中。
while unconfirmed_users:
# pop()方法每次从列表 unconfirmed_users末尾删除一个未验证用户,赋值给 current_user
current_user = unconfirmed_users.pop()
print(f"Verifying user: {current_user.title()}")
# 将已验证的用户添加到已验证用户列表current_user中
confirmed_users.append(current_user)
# 显示所有的已验证用户
print("\nThe following users have been confirmed:")
for confirmed_user in confirmed_users:
print(confirmed_user.title())
在这个示例中,我们创建了一个待验证用户列表 unconfirmed_users 和一个用于存储已验证用户的空列表 confirmed_users。
我们使用 while 循环,在验证用户的同时将其从未验证用户列表中提取出来,再将其加入到已验证用户列表中。
在每次循环中,我们使用 pop()方法从列表 unconfirmed_users 末尾删除一个未验证用户,并将其赋值给变量 current_user。
然后,我们打印出一条消息,告诉用户我们正在验证该用户。
最后,我们将已验证的用户添加到已验证用户列表 confirmed_users 中。
当列表 unconfirmed_users 为空时,循环结束,程序退出。
删除包含特定值的所有列表元素
使用 while 循环,可不断地删除包含特定值的所有列表元素。使用 remove()函数来删除列表中的特定值。
# 创建一个列表,其中包含多个值为‘cat’的元素。打
pets = ["dog", "cat", "dog", "goldfish", "cat", "rabbit", "cat"]
# 打印该列表。
print(pets)
# 不断地删除列表中的元素‘cat’,直到没有‘cat’为止。
while "cat" in pets:
pets.remove("cat")
# 再次打印该列表。
print(pets)
在这个示例中,我们创建了一个列表 pets,其中包含多个值为 ‘cat’ 的元素。
我们使用 while 循环,不断地删除列表中的元素 ‘cat’,直到没有 ‘cat’ 为止。
在每次循环中,我们使用 remove()函数从列表 pets 中删除一个值为 ‘cat’ 的元素。
当列表 pets 中没有值为 ‘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,指出调查是否继续。
我们使用 while 循环,提示用户输入被调查者的名字和回答。
在每次循环中,我们将回答存储在字典 responses 中,其中键为被调查者的名字,值为回答。
然后,我们使用 input()函数询问是否还有人要参与调查。
如果用户输入 ‘no’,我们将 polling_active 的值设置为 False,从而让循环停止运行。
当调查结束时,我们使用 for 循环遍历字典 responses 中的键值对,并打印出每个被调查者的名字和回答。
往期
- Python3完全新手小白的学习手册 6 字典
- Python3完全新手小白的学习手册 5 if语句
- Python3完全新手小白的学习手册 4 操作列表
- Python3完全新手小白的学习手册 3 列表
- Python3完全新手小白的学习手册 2 变量和简单数据类型
- Python3完全新手小白的学习手册 1 Python 的安装

2140

被折叠的 条评论
为什么被折叠?



