Python--用户输入与While循环

1、input() 函数的工作原理

input() 函数让程序暂停运⾏,等待⽤户输⼊⼀些⽂本。获取⽤户输⼊ 后,Python 将其赋给⼀个变量,以便使⽤。

message = input("Tell me something, and I will repeat it back to you:
")
print(message)

input() 函数接受⼀个参数,即要向⽤户显⽰的提⽰(prompt),让⽤户 知道该输⼊什么样的信息。

1.1 编写清晰的提示

  • 每当使⽤ input() 函数时,都应指定清晰易懂的提⽰
  • 在提⽰末尾(这⾥是冒号后⾯)添加⼀个空格,将提示与用户输入分开
  • 提示超过一行时,先将提⽰赋给⼀个变量,再将这个变量传递给 input() 函数。
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}!")

1.2 使用int() 来获取值得输入

>>> 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() 将这个字符串转换成了数值表⽰

1.3 求模运算符

求模运算符(%)是个很有⽤的⼯具,它将两个数相除 并返回余数

>>> 4 % 3
1
>>> 5 % 3
2
>>> 6 % 3
0
>>> 7 % 3
1

可利以来判断⼀个数是奇数还是偶数:

  • 偶数都能被 2 整除 number % 2 == 0
  • 否则是奇数

2、While循环

for 循环⽤于针对集合中的每个元素执⾏⼀个代码块,⽽ while 循环则不 断地运⾏,直到指定的条件不再满⾜为⽌。

2.1 使用While循环

可以使⽤ while 循环来数数。例如,下⾯的 while 循环从 1 数到 5:

current_number = 1
while current_number <= 5:
 print(current_number)
 current_number += 1

2.2 让用户选择何时退出

可以使⽤ 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)

2.3 使用标志

在更 复杂的程序中,有很多不同的事件会导致程序停⽌运⾏。

在要求满⾜很多条件才继续运⾏的程序中,可定义⼀个变量,⽤于判断整 个程序是否处于活动状态。这个变量称为标志(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 时,主游戏循环将退出。

2.4 使用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 True 打头的循环将不断运行,直到遇到break语句。

注意:在所有 Python 循环中都可使⽤ break 语句。例如,可使⽤

break 语句来退出遍历列表或字典的 for 循环。

2.5 在循环中使用continue

要返回循环开头,并根据条件测试的结果决定是否继续执⾏循环,可使⽤ 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 忽略余下的代码,并返回循环的开头。

2.6 避免无限循环

每个 while 循环都必须有结束运⾏的途径,这样才不会没完没了地执⾏下 去。

x = 1
while x <= 5:
 	print(x)
 	x += 1

如果像下⾯这样不⼩⼼遗漏了代码⾏ x += 1,这个循环将没完没了地运 ⾏:

# 这个循环将没完没了地运⾏!
x = 1
while x <= 5:
 print(x)

3、While处理列表和字典

通过将 while 循环与列表和字典结合起来使⽤,可收 集、存储并组织⼤量的输⼊,供以后查看和使⽤。

3.1 在列表中移动元素

假设有⼀个列表包含新注册但还未验证的⽹站⽤户。验证这些⽤户后,如

何将他们移到已验证⽤户列表中呢?

⼀种办法是使⽤⼀个 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())

3.2 删除特定值的所有列表元素

我们使⽤ 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' 还在列表中,因此再次进⼊循环。

3.3 使用用户输入填充字典

可以使⽤ 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 循环中的代码。

你可能感兴趣的:(Python,python,vscode,程序人生)