Python 3.X-仅从用户输入中提取数字

时间:2018-10-02 05:53:06

标签: python python-3.x

我坚持要解决的问题。我只是想从用户的输入中获取int(1-4),而不接收任何字符串/ float / etc。我已经弄清楚如果用户选择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()

将寻求任何帮助。我一直在努力寻找解决方案达数小时之久,但最后却陷入困境。

3 个答案:

答案 0 :(得分:0)

看来您似乎没有对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语句将捕获并正确处理它。

答案 1 :(得分:0)

尝试此操作如果您确保您的代码允许用户仅在python中输入数字:

def numInput():
    try:
        number = int(input("Tell me a number"))
    except:
        print "You must enter a number"
        numInput()

    return number

答案 2 :(得分:0)

您可以使用无限循环不断询问用户输入所需范围内的整数,直到用户输入一个整数:

while True:
    try:
        selection = int(input("> "))
        if 1 <= selection <= 4:
            break
        raise RuntimeError()
    except ValueError, RuntimeError:
        print("Please enter a valid integer between 1 and 4.")