python - Python 3.X - 仅从用户输入中获取数字
问题描述
我被困在一个我试图解决的问题上。我只假设从用户的输入中获取 int (1-4) 而不是任何字符串/浮点数/等。我已经弄清楚如果用户选择 1-4 以外的任何整数该怎么办。但是,我被困在用户选择除整数以外的任何内容(即字符串、浮点数等)的部分。这是我到目前为止所做的:
def menu():
my code
menu()
# keeps on looping till user have selected a proper selection (1-4)
selection = int(input("> "))
if selection == 1:
my code
elif selection == 2:
my code
elif selection == 3:
my code
elif selection == 4:
my code
else:
print("I'm sorry, that's not a valid selection. Please enter a
selection from 1-4. ")
menu()
任何帮助都将不胜感激。几个小时以来,我一直在努力寻找解决方案,但被困在了最后一部分。
解决方案
看到您似乎没有对来自的值进行任何整数运算input
- 我个人会将其保留为字符串。
selection = input("> ")
if selection == "1":
pass
elif selection == "2":
pass
#...
else:
print("I'm sorry...")
通过这样做,您根本不必处理这种极端情况。
如果您必须(出于某种原因)将其转换为int
(例如,您稍后使用该值),那么您可以考虑使用异常处理。
try:
selection = int(input("> "))
except ValueError:
selection = "INVALID VALUE"
然后继续,因为您当前的 else 语句将捕获并正确处理它。
推荐阅读
- microcontroller - .hex/s-rec 格式转换器到精灵
- python-3.x - 从包含特定子字符串的 .csv 中删除 URL 字符串
- python - 使用 AJAX 和 POST 下载 PDF 文件
- c++ - 无法分配类型 X 的对象,因为它的复制运算符隐式延迟
- java - Android:如何在继续之前等待方法完成
- linux - 什么是 DHCP 的实际完整形式?C代表什么控制或配置
- c# - Azure Blob 存储 C#:在异步上传方法调用后处理流
- excel - 修复 VBScript 中的“未知运行时错误”代码 800A03EC 以在不打开 Excel 的情况下运行宏
- python - 在 python 中使用 'YYYY-MM-DD_HH-MM-SS.txt' 格式创建文件名
- .net - 使用 SyslogNet.Client 通过 TCP 发送 SysLog 消息