python-3.x - Python 3 如何询问用户特定输入并拒绝无效输入
问题描述
我有一个关于如何检查用户输入并确保他们返回特定字符串的问题。目前,调用该函数时会询问用户的输入。但是,如果他们选择的字符串不是函数的一部分,else 语句将执行并继续代码。我试图弄清楚如何循环这个函数,直到用户输入函数正在寻找的字符串之一。谁能帮我这个?我是 python 新手,不胜感激。
def dwarf_class_definer(dwarf_class):
if dwarf_class == "Thane":
print("'Ahhh Nobility'")
elif dwarf_class == "Mekanik":
print("'Interesting a Mechanic'")
elif dwarf_class == "Ancestrite":
print("'A spiritualist. I see...'")
elif dwarf_class == "Prisoner":
print("'Never met a gen-u-ine 'Last chancer.'")
elif dwarf_class == "Civilian":
print("'ehhh a civilian? Wut you doing here?'")
else:
print("You aren't choosing a valid class.")
dwarf_class = input("Which Class will you choose?: ")
dwarf_class_definer(dwarf_class)
解决方案
一个 while 循环将继续运行,直到您不再告诉它。您可以看到,当提供预期值时,break 命令将终止 while 循环。与一堆 if 语句相比,字典还可以使您的代码更清晰、更易于维护。
dwarf_classes = {
"Thane": "'Ahhh Nobility'",
"Mekanik": "'Interesting a Mechanic'",
"Ancestrite": "'A spiritualist. I see...'",
"Prisoner": "'Never met a gen-u-ine 'Last chancer.'",
"Civilian": "'ehhh a civilian? Wut you doing here?'",
}
while True:
dwarf_class = input("Which Class will you choose?: ")
if dwarf_class in dwarf_classes.keys():
print(dwarf_classes[dwarf_class])
break
print("You aren't choosing a valid class.")
例子:
$ python3 so.py
Which Class will you choose?: Python!
You aren't choosing a valid class.
Which Class will you choose?: Prisoner
'Never met a gen-u-ine 'Last chancer.'
推荐阅读
- jmeter - JMeter 处理“测试完成”事件
- javascript - 如果匹配一个公共值,Vanilla Javascript 将 JSON 数组对象合并到嵌套数组中
- c# - Android/iOS 上的 Xamarin Forms 按钮侦听器特定功能
- javascript - 为什么这种特定的突变会回归真实,而其他突变则不然?
- asp.net-mvc - PagedListPager 不包含定义
- function - 如何从与其定义的模块不同的模块调用木偶函数
- tkinter-entry - 验证输入字段
- excel - 将 p 值从 reghdfe 导出到 Excel
- java - 如何获取本地 Maven 包以引入其依赖项?
- python - python requests sending files in array shows ValueError: too many values to unpack