6.1 函数input的工作原理
函数input()让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其存储在
一个变量中,以方便你使用。
message = input("Tell me something, and I will repeat it back to you: ")
print(message)
#输出:
#:Tell me something, and I will repeat it back to you: Hello everyone!
#:Hello everyone!
函数input()接受一个参数:即要向用户显示的提示或说明,让用户知道该如何做
注意:<u>input函数将用户的输入信息解读为字符串</u>
6.1.1 提示信息超过一行的显示处理--(字符串变量追加)
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("\nHello, " + name + "!")
#输出:
If you tell us who you are, we can personalize the messages you see.
What is your first name? Eric
Hello, Eric!
6.1.2 int()获取数值输入
注意:将数值输入用于计算和比较前,务必将其转换为数值表示
age = input("How old are you? ")
How old are you? 21
age = int(age)
age >= 18
True
6.1.3 求模运算 (“%”)
example:判断奇数偶数
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.")
#输出结果:
Enter a number, and I'll tell you if it's even or odd: 42
The number 42 is even.
注意:在python2.7中的input()对应的是raw_input()
6.2 while 循环
6.2.1 使用while循环
current_number = 1
while current_number <= 5:
print(current_number)
current_number += 1
6.2.2 让用户选择何时退出
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)
#输出:
Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. Hello everyone!
Hello everyone!
Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. Hello again.
Hello again.
Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. quit
6.2.3 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("I'd love to go to " + city.title() + "!")
#输出:
Please enter the name of a city you have visited:
(Enter 'quit' when you are finished.) New York
I'd love to go to New York!
Please enter the name of a city you have visited:
(Enter 'quit' when you are finished.) San Francisco
I'd love to go to San Francisco!
Please enter the name of a city you have visited:
(Enter 'quit' when you are finished.) quit
注意: 在任何Python循环中都可使用break语句。例如,可使用break语句来退出遍历列表或字典
的for循环。
6.2.4 continue
要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句
current_number = 0
while current_number < 10:
current_number += 1
if current_number % 2 == 0:
continue
print(current_number)
#:
1
3
5
7
9
6.3 while循环处理列表和字典
6.3.1 列表之间移动元素
# 首先,创建一个待验证用户列表
# 和一个用于存储已验证用户的空列表
unconfirmed_users = ['alice', 'brian', 'candace']
confirmed_users = []
# 验证每个用户,直到没有未验证用户为止
# 将每个经过验证的列表都移到已验证用户列表中
while unconfirmed_users:
current_user = unconfirmed_users.pop() #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())
#输出:
Verifying user: Brian
Verifying user: Alice
The following users have been confirmed:
Candace
Brian
Alice
由于Candace位于列表unconfirmed_users末尾,因此 其名字将首先被删除、存储到变量current_user中并加入到列表confirmed_users中。
6.3.2 删除包含特定值的所有列表元素
问题:我们使用函数remove()来删除列表中的特定值,这之所以可行,是因为要删除
的值在列表中只出现了一次。如果要删除列表中所有包含特定值的元素,该怎么办呢?
while循环实现:
pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
print(pets)
while 'cat' in pets:
pets.remove('cat')
print(pets)
#输出:
['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
['dog', 'dog', 'goldfish', 'rabbit']
6.3.3 使用用户输入来填充字典
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(name + " would like to climb " + response + ".")
#输出:
What is your name? Eric
Which mountain would you like to climb someday? Denali
Would you like to let another person respond? (yes/ no) yes
What is your name? Lynn
Which mountain would you like to climb someday? Devil's Thumb
Would you like to let another person respond? (yes/ no) no
--- Poll Results ---
Lynn would like to climb Devil's Thumb.
Eric would like to climb Denali.
网友评论