作者 | 弗拉德
起源 | 弗拉德(公众号:fulade_me)
函数 input()
函数 input()
让程序暂停运行,期待用户输出一些文本。获取用户输出后,Python 将其存储在一个变量中,以不便你应用。
例如,上面的程序让用户输出一些文本,再将这些文本出现给用户:
message = input("Tell me something, and I will repeat it back to you:")
print(message)
函数 input(
) 承受一个参数:即要向用户显示的提醒或阐明,让用户晓得该如何做。在这个示例中,用户将看到提醒 Tell me something, and I will repeat it back to you:
。程序期待用户输出,并在用户按回车键后持续运行。
输出存储在变量 message
中,接下来的 print(message)
将输出出现给用户:
Tell me something, and I will repeat it back to you: This is Fulade!
This is Fulade!
每当你应用函数 input()
时,都应指定清晰而易于明确的提醒,精确地指出你心愿用户提供什么样的信息——指出用户该输出任何信息的提醒都行,如下所示:
name = input("Please enter your name:")
print("Hello," + name + "!")
通过在提醒开端(这里是冒号前面)蕴含一个空格,可将提醒与用户输出离开,让用户分明地晓得其输出始于何处,如下所示:
Please enter your name: Fulade
Hello, Fulade!
int()函数
应用函数 input()
时,Python 将用户输出解读为字符串。请看上面让用户输出其年龄的解释器会话
>>> age = input("How old are you?")
How old are you? 21
>>> age
'21'
用户输出的是数字 21,但咱们申请 Python 提供变量 age
的值时,它返回的是 ’21’——用户输出
的数值的字符串示意。咱们怎么晓得 Python 将输出解读成了字符串呢?因为这个数字用引号括起
了。
如果咱们只想打印输出,这一点问题都没有;但如果你试图将输出作为数字应用,就会引发谬误:
>>> age = input("How old are you?")
How old are you? 21
>>> age >= 18
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() >= int()
你试图将输出用于数值比拟时,Python 会引发谬误,因为它无奈将字符串和整数进
行比拟:不能将存储在 age
中的字符串 ’21’ 与数值 18 进行比拟。
为解决这个问题,可应用函数 int()
,它让 Python 将输出视为数值。函数int()
将数字的字符
串示意转换为数值示意,如下所示:
>>> age = input("How old are you?")
How old are you? 21
>>> age = int(age)
>>> age >= 18
True
在这个示例中,咱们在提醒时输出 21 后,Python 将这个数字解读为字符串,但随后 int()
将这个字符串转换成了数值示意。
这样 Python 就能运行条件测试了:将变量 age(它当初蕴含数值 21)同 18 进行比拟,看它是否大于或等于 18。测试后果为 True
。
如何在理论程序中应用函数 int()
呢?请看上面的程序,它判断一个人是否满足坐过山车的身高要求:
height = input("How tall are you, in inches?")
height = int(height)
if height >= 36:
print("\nYou're tall enough to ride!")
else:
print("\nYou'll be able to ride when you're a little older.")
在这个程序中,为何能够将 height 同 36 进行比拟呢?因为在比拟前,height = int(height)
将输出转换成了数值示意。如果输出的数字大于或等于 36,咱们就通知用户他满足身高条件:
How tall are you, in inches? 71
You're tall enough to ride!
将数值输出用于计算和比拟前,务必将其转换为数值示意。
应用 while 推出
可应用 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)
咱们定义了一条提醒音讯,通知用户他有两个抉择:要么输出一条音讯,要么输
入退出值(这里为 ’quit’)。
接下来,咱们创立了一个变量——message
,用于存储用户
输出的值。咱们将变量 message
的初始值设置为空字符串 ””,让 Python 首次执行 while
代码行时有可供查看的货色。
Python 首次执行 while
语句时,须要将 message
的值与 ’quit’ 进行比拟,但此时用户还没有输出。如果没有可供比拟的货色,Python 将无奈持续运行程序。
为解决这个问题,咱们必须给变量 message
指定一个初始值。尽管这个初始值只是一个空字符串,但符合要求,让 Python 可能执行 while
循环所需的比拟。只有 message
的值不是 ’quit’,这个循就会一直运行。
首次遇到这个循环时,message
是一个空字符串,因而 Python 进入这个循环。执行到代码行 message = input(prompt)
时,Python 显示提醒音讯,并期待用户输出。
不论用户输出是什么,都 将存储到变量 message
中并打印进去;接下来,Python 从新查看 while
语句中的条件。只有用户输出的不是单词quit
,Python 就会再次显示提醒音讯并期待用户输出。
等到用户终于输出 quit
后,Python 进行执行 while 循环,而整个程序也到此结束:
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
quit
这个程序很好,惟一美中不足的是,它将单词 quit
也作为一条音讯打印了进去。为修复这种问题,只需应用一个简略的 if 判断:
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)
当初,程序在显示音讯前将做简略的查看,仅在音讯不是退出值时才打印它。
小作业
12.1 编写一个程序,询问用户要征询什么样的汽车,并打印一条音讯,如 ”Let me see if I can find you a Subaru”。
12.2 餐馆订位:编写一个程序,询问用户有多少人用餐。如果超过 8 人,就打印一条音讯,指出没有空桌;否则指出有空桌。
12.3 让用户输出一个数字,并指出这个数字是否是 10 的整数倍。
想查看作业答案能够去我的 Githu 仓库在文件夹 12-1_12-3 下