大多数程序都旨在解决最终用户的问题,为此就需要获取用户的信息。假如你要判断小孩是否需要购买全价票,就需要获取小孩的身高,这样才能得出正确的结论。因此这种程序就需要让用户输入其身高,再与规定的身高值进行比较,最后得出结果。
Python使用函数input()接受用户输入。从此刻开始,我们一起学习怎样使用函数input()。
1.函数input()的工作原理
函数input()让程序暂停,等待用户输入一些文本。获取用户输入以后,Python将其存储在一个变量中,以方便使用。
例如,下面的程序让用户输入一些文本,再将这些文本呈现给用户:
parrot.py
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 to you:。等用户输入并按回车,输入的内容将被存储在变量message中。接着打印出用户的输入:
Tell me something, and I will repeat it back to you:Hello World!
Hello World!
1.1 编写清晰的程序
当你使用函数input()时,应当通过提示语告诉用户你希望获得什么信息,所以提示语应当清晰明确。比如你要获取用户的名字:
greeter.py
name = input("Please enter you name: ")
print("Hello, " + name + "!")
输出结果为:
Please enter you name: Eric
Hello, Eric!
有时候你的提示可能超过一行,比如你在获取用户姓名时告诉他们你这样做的原因是什么。这种情况下,你可先将提示存在一个变量中,再将变量传递给函数input()。这样即便提示有好几行,仍旧十分清晰。
greeter.py
prompt = "If you tell us who you are, we can personalize the message you see."
prompt += "\nWhat's your name? "
name = input(prompt)
print("Hello, " + name +"!")
在这个实例中,第一行将消息的前半部分存储在变量prompt中;第二行,运算符 "+=" 在prompt的末尾附加一个字符串。
最终的提示横跨两行:
If you tell us who you are, we can personalize the message you see.
What's your name? Eric
Hello, Eric!
1.2 使用int()来获取数值输入
使用函数input()时,实际上会将所有的输入默认为是字符串,即使你输入一个数字依旧会被Python当作字符串处理。比如下面这种情况:
>>>age = input("How old are you?")
How old are you?21
>>>if age >= 18:
Traceback (most rencent call last);
File "", line 1, in
TypeError: unorderable type: str() >= int()
上面这种错误发生原因在于,input()函数返回的'21'是一个字符串,而程序错误的将字符串与数值进行比较,因此会使得Python不清楚程序的含义是什么。
这时我们只需使用函数int(),它让Python将输入视为数值,也就是将数字的字符串转换为数值表示,如下所示:
>>>age = input("How old are you?")
How old are you?21
>>>age = int(age)
>>>age >= 18
True
所以今后编写程序时,一定要注意某一数字的含义是字符串还是数值,如果需要将数字字符串转换为数值,只要使用函数int()就可以。
1.3 求模运算符
处理数值信息时,求模运算符(%)是一个很有用的工具,它将两个数相除并返回余数:
>>>4%3
1
>>>5%3
1
>>>6%3
0
>>>7%3
1
因此你也可以使用求模运算符判断输入的数值是奇数还是偶数:
number = input("Enter a number, and I'll tell you it's odd or even: ")
number = int(number)
if number % 2 == 0:
print("\n The number " + str(number) + " is even.")
else:
print("\n The number " + str(number) + " is odd.")
偶数可以被2整除,余数为0,否则即为奇数。最后的输出结果为:
Enter a number, and I'll tell you it's odd or even: 59
The number 59 is odd.