【问题标题】:How do I check if raw input is integer in python 2.7?如何在 python 2.7 中检查原始输入是否为整数?
【发布时间】:2013-10-26 18:47:43
【问题描述】:

有没有一种方法可以用来检查raw_input 是否为整数?

我在网上研究后发现了这个方法:

print isinstance(raw_input("number: ")), int)

但是当我运行它并输入4 时,我得到FALSE。 我对python有点陌生,任何帮助将不胜感激。

【问题讨论】:

    标签: python string python-2.7 integer raw-input


    【解决方案1】:

    isinstance(raw_input("number: ")), int) 总是产生False,因为raw_input 作为结果返回字符串对象。

    使用try: int(...) ... except ValueError

    number = raw_input("number: ")
    try:
        int(number)
    except ValueError:
        print False
    else:
        print True
    

    或使用str.isdigit:

    print raw_input("number: ").isdigit()
    

    注意第二个产生False-4,因为它包含非数字字符。如果您只想要数字,请使用第二个。

    更新 正如 J.F. Sebastian 指出的那样,str.isdigit 取决于区域设置 (Windows)。它可能会返回True,甚至int() 也会为输入引发ValueError。

    >>> import locale
    >>> locale.getpreferredencoding()
    'cp1252'
    >>> '\xb2'.isdigit()  # SUPERSCRIPT TWO
    False
    >>> locale.setlocale(locale.LC_ALL, 'Danish')
    'Danish_Denmark.1252'
    >>> '\xb2'.isdigit()
    True
    >>> int('\xb2')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: invalid literal for int() with base 10: '\xb2'
    

    【讨论】:

    • 或者,如果他们想把变量变成数字,number = int(number)
    • str.isdigit() 可能取决于区域设置(因为 Microsoft),即它可能返回 True 甚至 int() 会为输入引发 ValueError。
    • @J.F.Sebastian, raw_input() 返回 str 对象,而不是 unicode 对象。所以我认为str.isdigit 会按预期工作。你能给我举个例子吗?
    • 使用 cp1252 语言环境,而不是 cp1251。 PYTHONIOENCODING 不相关。
    • @J.F.Sebastian,是的,我查过了:i.imgur.com/BglM8Ol.png。我忘了粘贴那部分。再次感谢你:)
    【解决方案2】:

    你可以这样做:

    try:
        val = int(raw_input("number: "))
    except ValueError:
        # not an integer
    

    【讨论】:

      【解决方案3】:

      这是我的解决方案

      `x =raw_input('Enter a number or a word: ')
      y = x.isdigit()
      if (y == False):
          for i in range(len(x)):
              print('I'),
      else:
          for i in range(int(x)):
              print('I'),
      

      `

      【讨论】:

      • 请考虑编辑您的帖子以解释这是如何工作的,因为仅代码的答案并不总是让 OP 清楚如何解决他们的问题。
      【解决方案4】:

      试试这个方法.isdigit(),见下面的例子。

      user_input = raw_input()
      if user_input.isdigit():
          print "That is a number."
      
      else:
          print "That is not a number."
      

      如果您需要输入保持数字以供进一步使用,您可以添加如下内容:

      new_variable = int(user_input)
      

      【讨论】:

        【解决方案5】:
        def checker():
          inputt = raw_input("how many u want to check?")
          try:
              return int(inputt)
          except ValueError:
              print "Error!, pls enter int!"
              return checker()
        

        【讨论】:

          猜你喜欢
          • 2018-05-19
          • 1970-01-01
          • 2016-05-19
          • 1970-01-01
          • 2013-11-24
          相关资源
          最近更新 更多