08-项目_如何让人忙几小时
8.2 项目:如何让人忙几小时
让我们利用 PyInputPlus
创建一个执行以下操作的简单程序。
1.询问用户是否想知道如何让人忙几小时。
2.如果用户回答no,退出。
3.如果用户回答yes,转到步骤1。
当然,我们不知道用户是否会输入“yes”或“no”以外的内容,因此我们需要执行输入验证。用户也可以输入“y”或“n”,而不用输入完整的单词。 PyInputPlus
的 inputYesNo()
函数将为我们处理此问题,无论用户输入什么大小写,均返回小写的 'yes'
或 'no'
字符串值。
运行该程序时,它应如下所示:
Want to know how to keep a person busy for hours?
sure
'sure' is not a valid yes/no response.
Want to know how to keep a person busy for hours?
yes
Want to know how to keep a person busy for hours?
y
Want to know how to keep a person busy for hours?
Yes
Want to know how to keep a person busy for hours?
YES
Want to know how to keep a person busy for hours?
YES!!!!!!
'YES!!!!!!' is not a valid yes/no response.
Want to know how to keep a person busy for hours?
TELL ME HOW TO KEEP A PERSON BUSY FOR HOURS.
'TELL ME HOW TO KEEP A PERSON BUSY FOR HOURS.' is not a valid yes/no response.
Want to know how to keep a person busy for hours?
no
Thank you. Have a nice day.
打开一个新的文件编辑器窗口,将它另存为busy.py。然后输入以下代码:
import pyinputplus as pyip
这将导入 PyInputPlus
模块。由于pyinputplus的字母比较多,因此我们将使用简称 pyip
。
while True:
prompt = 'Want to know how to keep a person busy for hours?\n'
response = pyip.inputYesNo(prompt)
接下来, while True:
创建了一个无限循环,该循环继续运行,直到遇到 break
语句。在这个循环中,我们调用 pyip.inputYesNo()
,确保在用户输入有效答案之前该函数调用不会返回:
if response == 'no':
break
pyip.inputYesNo()
调用保证仅返回字符串 yes
或 no
。如果返回 no
,那么程序会跳出无限循环并执行最后一行,即感谢用户:
print('Thank you. Have a nice day.')
否则,循环将再次迭代。
你还可以传入 yesVal
和 noVal
关键字参数,从而在非英语语言中使用 inputYesNo()
函数。例如,该程序的西班牙语版本将包含以下两行:
prompt = '¿Quieres saber cómo mantener ocupado a una persona durante horas?\n'
response = pyip.inputYesNo(prompt, yesVal='sí', noVal='no')
if response == 'sí':
现在,用户可以输入 sí
或 s
(大写或小写),而不是 yes
或 y
作为肯定的答案。