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 作为肯定的答案。