首页 > 解决方案 > 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()

任何帮助都将不胜感激。几个小时以来,我一直在努力寻找解决方案,但被困在了最后一部分。

标签: pythonpython-3.x

解决方案


看到您似乎没有对来自的值进行任何整数运算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 语句将捕获并正确处理它。


推荐阅读