【问题标题】:Preventing alphabetical input [duplicate]防止字母输入[重复]
【发布时间】:2011-10-25 06:16:10
【问题描述】:

可能重复:
Python - How to check if input is a number (given that input always returns strings)

如果输入不是数字,我需要检查输入并发送错误消息。我将如何以最好的方式做到这一点?似乎找不到任何其他关于它的帖子,你我确信之前一定有人问过这个问题。

【问题讨论】:

    标签: python-3.x


    【解决方案1】:
     if not value.isdigit():
         raise ValueError("Input must be numeric")
    

    如果您从raw_input() 获得您的意见,@TokenMacGuy 的解决方案会更好,但否则这可行。

    如果你想循环直到你得到正确的输入而不是引发错误,试试这个:

    value = input("Input: ")
    while not value.isdigit():
        input("Input must be numeric, please reenter: ")
    

    【讨论】:

    • 我正在使用 input(),但问题是我需要消息类似于“输入必须是数字,请重新输入:”
    • 谢谢,这正是我想要的。
    • @Sergei,如果是数字,你会怎么做?将其转换为数字?如果是这样,请不要检查,只需进行转换即可。
    【解决方案2】:

    编辑:

    >>> while True:
    ...     try:
    ...         result = int(raw_input("Enter a Number: "))
    ...         break
    ...     except ValueError:
    ...         print "Input must be a number"
    ... 
    Enter a Number: abc
    Input must be a number
    Enter a Number: def
    Input must be a number
    Enter a Number: 123
    >>> result
    123
    >>> 
    

    【讨论】:

      【解决方案3】:
      while True:
          user_input = raw_input("> Please enter a number:")
          try:
              n = float(user_input)
          except ValueError:
              continue
          else:
              break
      

      【讨论】:

        【解决方案4】:

        isdigit 函数可用于测试字符串是否全为数字且不为空:

        val = '255'
        val.isdigit()
        

        【讨论】: