目录
一、函数 input() 的原理
1.1 编写清晰的程序
1.3 求模运算
二、while 循环简介
2.1 使用 while 循环
2.2 让用户选择何时退出
2.3 使用标志
2.4 使用 break 退出循环
2.5 在循环中使用continue
2.6 避免无限循环
练习
三、使用 while 循环处理列表和字典
3.1 在列表之间移动元素
3.2 删除包含特定值的所有列表元素
3.3 使用用户输入来填充字典
函数 input() 让程序暂停运行,等待用户输入一些文本。获取用户输入后,python将其存储在一个变量中,以方便使用。
message = input("Tell me something and I will repeat it back to you: ")
print(message)
input() 函数接受一个参数,可以向用户清晰且易于明白地指出希望用户输入的信息。
name = input("Please input your name: ")
print("Hello, " + name + "!")
⚠️使用python3解释器,input()可以直接辨别输入的字符串,但是python2解释器输入字符串需要加“”.
pycharm默认了python2解释器。
已解决!
在这里,添加python解释器
设置运行文件时,选择解释器python3.7。
有时,提示语句可能超过一行,此时可将提示语句存储在一个变量中。
prompt = "If you tell us you are, we can personalize the message you see."
prompt +="\nWhat is your first name? "
name = input(prompt)
print("\nHello, " + name +"!")
1.2 使用 int() 来获取数值输入
使用函数 input() 时,python解释器将用户的输入解读为字符串格式。
age = input("How old are you?")
print(type(age))
使用函数 int() ,可以将数字的字符串表示转换为数值表示。
e.g.1 判断一个人是否满足坐过山车的身高。
height = input("How tall are you, in inches? ")
height = int(height)
if height>=36:
print("\nYou are tall enough to ride!")
else:
print("\nYou'll be able to ride when you're a little older.")
求模运算符% :将两数相除并返回余数。
若一个数可被另一个数整除,余数为0,可利用这一点判断奇/偶数。
number = input("Enter a number, and I'll tell you if it's even or odd: ")
number = int(number)
if number % 2 ==0:
print("\nThe number " + str(number) + " is even.")
else:
print("\nThe number " + str(number) + " is odd.")
python 2.7中,使用 raw_input() 来获取用户输入,raw_input() 也将用户输入解读为字符串格式;
python 2.7也包含 input() ,将用户输入解读为python代码,并尝试运行;python 2.7下,最好使用 raw_input() 来获取用户输入。
for 循环针对集合中的每一个元素都执行同一段代码;while 循环不断运行,知道满足指定的条件为止。
使用 while 循环计数。
current_number = 1
while current_number <= 5:
print(current_number)
current_number += 1
定义一个退出值,用户输入为退出值时退出,否则继续运行。
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)
在要求很多条件都满足时才继续运行程序时,可定义一个变量,用于判断整个程序是否处于活动状态,这个变量称为标志。
while 循环只需要判断标志是否为"True",改变标志值的其他条件可以使用if 语句判断。
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)
prompt = "\nPlease enter the name of a city you have visited: "
prompt += "\nEnter 'quit' when you are finished. "
while True:
city = input(prompt)
if city == 'quit':
break
else:
print("I'd love to go to " + city.title() + "!")
返回至循环开头,并根据条件测试结果决定是否继续执行循环。只结束单次循环
e.g. 只打印10以内的奇数。
(理解:if 语句检查current_number 与2的求模运算的结果,若结果为0,执行 continue 语句,忽略余下的代码并返回到循环的开头;若当前的数字不能被2整除,就执行循环中余下的代码。)
current_number = 0
while current_number < 10:
current_number +=1
if current_number %2 ==0:
continue
else:
print(current_number)
电影票:有家电影院根据观众的年龄收取不同票价:不到3岁的观众免费;3~12岁观众为10美元;超过12岁的观众为15美元。编写一个while 循环,在其中询问用户的年龄,并指出其票价。
prompt = "How old are you? Please input your age: "
active = True
while active:
age = input(prompt)
if age =='quit':
break
else:
age = int(age) #!!! -->
if age < 3:
print("Free.")
elif age <= 12:
print("10$.")
else:
print("15$.")
空列表作为判断条件时,为False。
# 首先,创建一个待验证用户列表
unconfirmed_users = ['alice','brian','candace']
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())
e.g 假设有一个宠物列表,其中包含多个值为'cat'的元素,删除所有这些元素。
(remove() 只删除第一个匹配的元素)
pets = ['dog','cat','dog','goldfish','rabbit','cat']
print(pets)
while 'cat' in pets:
pets.remove('cat')
print(pets)
e.g 使用while循环提示用户输入任意数量的信息,并将用户的名字和回答存储在一个字典中。
responses = {}
# 设置一个标志,指出调查是否继续
polling_active = True
while polling_active:
# 提示输入被调查者的名字和回答
name = input("\nWhat's your name? ")
response = input("\nWhich mountain would you like to climb someday? ")
# 将答案存储在字典中
responses[name] = response
#查看是否有人参与调查
repeat = input("Would you like to let another person repond?(yes/no)")
if repeat == 'no':
polling_active = False
# 调查结果,显示结果
print("\n--- Poll Results ---")
for name, response in responses.items():
print(name.title() + " would like to climb " + response + ".")