【问题标题】:Is there a way to check if an input is an integer before converting it in python?有没有办法在python中转换输入之前检查输入是否为整数?
【发布时间】:2020-06-05 02:17:43
【问题描述】:

我需要接受输入并将其转换为任何类型的变量。例如,如果输入是 2,我需要找出 2 是整数,然后将 int 转换后的输入存储到 int 类型变量。例如:

>>> myInput = input("Input a number: ")
>>> if myInput is float:
>>>   print("myInput is a float")
>>> if myInput is int:
>>>   print("myInput is an integer")
Input a number: 2
myInput is an integer

然而,实际发生的是:

Input a number: 2

然后程序结束。

【问题讨论】:

标签: python variables input


【解决方案1】:

input() 返回一个字符串,你必须先转换它。您可以通过检查 '.' 的存在来确定它是浮点数还是整数

myInput = input("Input a number: ")
if '.' in myInput:
    try:
        myInput = float(myInput)
        print(f'{myInput} is a float')
    except ValueError:
        print(f'{myInput} is not a number')
else:
    try:
        myInput = int(myInput)
        print(f'{myInput} is an integer')
    except ValueError:
        print(f'{myInput} is not a number')

【讨论】:

    【解决方案2】:

    intfloat 不是数据类型,它们是内置函数,它们分别将参数转换为 int 和 float。您可以为此使用 try catch。如果调用 int(myInput) 引发 ValueError,则该字符串不代表有效整数,与 float(myInput) 相同。

    try:
        int(myInput)
        print('myInput is an int')
    except ValueError:
        pass
    try:
        myInput = float(myInput)
        print('myInput is a float')
    except ValueError:
        pass
    

    另一种选择

    【讨论】:

      【解决方案3】:

      这不是一种非常复杂的方式,但它会以一种很好的方式工作 - 我相信编码应该总是很有趣。

      def check_input_type(value):
      
          out = 'Input is String: {}'
          def is_float(val):
              return not (float(val)).is_integer()
      
          ord_val = ord(value[0])
          if not ord_val >= 65:
              try:
                  if is_float(value):
                      out = 'Input is Float: {}'
                  else:
                      out = 'Input is Integer: {}'
              except ValueError:
                  pass
          return out.format(value)
      
      check_input_type(input("Input a number: "))
      

      让我们测试一下:

      check_input_type(input("Input a number: "))
      
      Input a number: 78.89
      Out[37]: 'Input is Float: 78.89'
      
      check_input_type(input("Input a number: "))
      
      Input a number: 1arrow
      Out[38]: 'Input is String: 1arrow'
      
      check_input_type(input("Input a number: "))
      
      Input a number: 123
      Out[39]: 'Input is Integer: 123'
      
      check_input_type(input("Input a number: "))
      
      Input a number: 123-one-two-three
      Out[40]: 'Input is String: 123-one-two-three'
      

      【讨论】:

        猜你喜欢
        • 2020-04-03
        • 1970-01-01
        • 1970-01-01
        • 2016-05-19
        • 1970-01-01
        相关资源
        最近更新 更多