input()函数的工作原理
input() 函数暂停您的程序并等待用户输入一些文本。 一旦 Python 收到用户的输入,它就会将该输入分配给一个变量,以方便您使用。
例如,以下程序要求用户输入一些文本,然后将该消息显示给用户:
message = input("Tell me something, and I will repeat it back to you: ")
print(message)
input() 函数接受一个参数:我们要向用户显示的提示,以便他们知道要输入什么样的信息。 在此示例中,当 Python 运行第一行时,用户会看到提示 Tell me something, and I will repeat it back back to you: 。 程序等待用户输入他们的响应,并在用户按下 ENTER 后继续。 响应分配给变量消息,然后 print(message) 将输入显示回给用户:
Tell me something, and I will repeat it back to you: Hello everyone!
Hello everyone!
一些文本编辑器不会运行提示用户输入的程序。 您可以使用这些编辑器编写提示输入的程序,但您需要从终端运行这些程序。 请参阅第 11 页的“从终端运行 Python 程序”。 |
编写清晰的提示
每次使用 input() 函数时,您都应该包含一个清晰、易于理解的提示,告诉用户您正在寻找什么样的信息。 任何告诉用户输入什么的语句都应该有效。 例如:
name = input("Please enter your name: ")
print(f"\nHello, {name}!")
在提示末尾添加一个空格(在前面示例中的冒号之后)以将提示与用户的响应分开,并让用户清楚地知道在何处输入文本。 例如:
Please enter your name: Eric
Hello, Eric!
有时你会想写一个比一行长的提示。 例如,您可能想告诉用户您为什么要求某些输入。 您可以将提示分配给一个变量并将该变量传递给 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}!")
此示例显示了一种构建多行字符串的方法。 第一行将消息的第一部分分配给变量提示。 在第二行中,运算符 += 获取分配给 prompt 的字符串并将新字符串添加到末尾。
提示现在跨越两行,为清楚起见,在问号后再次加空格:
If you share your name, we can personalize the messages you see.
What is your first name? Eric
Hello, Eric!
使用int()来获取数值输入
当您使用 input() 函数时,Python 将用户输入的所有内容解释为字符串。 考虑以下解释器会话,它询问用户的年龄:
>>> age = input("How old are you? ")
How old are you? 21
>>> age
'21'
用户输入数字 21,但是当我们向 Python 询问年龄的值时,它返回“21”,即输入的数值的字符串表示形式。 我们知道 Python 将输入解释为字符串,因为数字现在用引号引起来。 如果您想做的只是打印输入,这很有效。 但是,如果您尝试将输入用作数字,则会出现错误:
>>> age = input("How old are you? ")
How old are you? 21
>>> age >= 18 (1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '>=' not supported between instances of 'str' and (2)
'int'
1 | 当您尝试使用输入进行数值比较时,Python 会产生错误,因为它无法将字符串与整数进行比较: |
2 | 分配给年龄的字符串 '21' 无法与数值 18 进行比较。 |
我们可以使用 int() 函数解决这个问题,该函数将输入字符串转换为数值。 这允许比较成功运行:
>>> age = input("How old are you? ")
How old are you? 21
>>> age = int(age) (1)
>>> age >= 18
True
1 | 在这个例子中,当我们在提示符下输入 21 时,Python 将数字解释为字符串,但随后通过 int() 将值转换为数字表示。 |
现在 Python 可以运行条件测试:它比较 age(现在表示数值 21)和 18 以查看 age 是否大于或等于 18。此测试的计算结果为 True。 如何在实际程序中使用 int() 函数? 考虑一个确定人的身高是否足以乘坐过山车的程序:
height = input("How tall are you, in inches? ")
height = int(height)
if height >= 48:
print("\nYou're tall enough to ride!")
else:
print("\nYou'll be able to ride when you're a little older.")
该程序可以将 height 与 48 进行比较,因为 height = int(height) 在进行比较之前将输入值转换为数字表示形式。 如果输入的数字大于或等于 48,我们会告诉用户他们已经足够高了:
How tall are you, in inches? 71
You're tall enough to ride!
当您使用数值输入进行计算和比较时,请务必先将输入值转换为数值表示。
求模运算符
处理数字信息的有用工具是模运算符 (%
),它将一个数除以另一个数并返回余数:
>>> 4 % 3
1
>>> 5 % 3
2
>>> 6 % 3
0
>>> 7 % 3
1
模运算符不会告诉您一个数字适合另一个数字多少次; 它只告诉你余数是多少。 当一个数可被另一个数整除时,余数为 0,因此模运算符始终返回 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(f"\nThe number {number} is even.")
else:
print(f"\nThe number {number} is odd.")
偶数总是可以被 2 整除,所以如果一个数和 2 的模为零(这里,如果 number % 2 == 0
)这个数就是偶数。 否则,这很奇怪。
Enter a number, and I'll tell you if it's even or odd: 42
The number 42 is even.