python - 有没有办法让这个更小?
问题描述
我想要得到的只是输入list_
只有0-10
当它不是时,让用户再次输入,直到他们输入。因此,如果他们输入“空格键”、“p”、“[”或任何类似的内容,它应该只对 0-10 有效。这就是我能想到的:
list1 = ["bacon", "cheese", "cheddar", "milk", "apples", "lamp", "door", "blanket", "rug", "windows", "coat"]
list_ = input("What item do you want? (0-10) ")
while True:
if (list_ != "0") and (list_ != "1") and (list_ != "2") and (list_ != "3") and (list_ != "4") and (list_ != "5"):
list_ = input("What do you want from the list? (0-10)")
if (list_ != "6") and (list_ != "7") and (list_ != "8") and (list_ != "9") and (list_ != "10"):
list_ = input("What do you want from the list? (0-10)")
elif list_ == "0":
print(list1[0])
break
elif list_ == "1":
print(list1[1])
break
elif list_ == "2":
print(list1[2])
break
elif list_ == "3":
print(list1[3])
break
elif list_ == "4":
print(list1[4])
break
elif list_ == "5":
print(list1[5])
break
elif list_ == "6":
print(list1[6])
break
elif list_ == "7":
print(list1[7])
break
elif list_ == "8":
print(list1[8])
break
elif list_ == "9":
print(list1[9])
break
elif list_ == "10":
print(list1[10])
break
解决方案
列表按整数索引,因此如果将输入从字符串转换为整数,则它是一个单行。但是您必须担心输入数据错误。通常在 python 中,您只需尝试操作并捕获发生的任何异常。
list1 = ["bacon", "cheese", "cheddar", "milk", "apples", "lamp", "door", "blanket", "rug", "windows", "coat"]
while True:
list_ = input("What item do you want? (0-10) ")
try:
print(list1[int(list_)])
break
except (IndexError, ValueError):
print(list_, "is not a number between 0 and 10")
推荐阅读
- reactjs - React hook useEffect 无法读取使用 firebase 的 firestore 实时数据更新的新 useState 值
- javascript - 在呈现页面后尝试从 JavaScript 函数访问模型数据 NodeJS EJS
- websphere - IBM ODM 相关 XOM 类
- c# - 如何在 C# net core 中从数据库中获取数据
- python - Python:用多个值替换单个字符
- user-interface - 如何为 Spark AR 创建 UI?
- javascript - JS 文档帮助。文档事件监听器
- jsf - 选择一个panelGrid并设置对象
- java - 如何使用 jOOQ gradle 插件将 postgres 中的 bigint[] 字段转换为类字段
- firebase - 无法向 Firebase 远程配置添加值/参数