如何测试某些东西是不是整数?

时间:2015-10-13 16:09:50

标签: python python-3.x

我必须为一小部分功课创建一个计算器,我要求输入数字和将使用的符号:

number1=int(input("\nWhat is your first number?"))

number2=int(input("\nWhat is your second number?"))

symbol=input("\nWhat is the symbol you will use?")

我想知道是否有任何方式我可以再次询问int(input())是否输入除整数之外的任何内容。

我对Python atm并不是很好,所以如果我错过了一些明显的东西,那么道歉。 如果这个帖子是重复的,也很抱歉。

4 个答案:

答案 0 :(得分:1)

python中的规范方法类似于:

def get_integer_or_retry(mesg)
   while True:
      val = input(mesg) # or raw_input for python 2
      try:
          val = int(val)
          return val
      except ValueError: #trying to cast string as int failed
          pass # or you could let the user know their input was invalid

请注意,如果用户输入1.0(或其他一些也是整数的小数),这仍然会抛出ValueError(感谢Robᵩ);如果你需要处理恰好是整数的浮点数,你可以做val = int(float(val)),但这也会接受(并默默地向下舍入)浮动数字......

答案 1 :(得分:0)

要知道变量类型do type(var)

所以,基本上你需要做的是:

 if type(variable)==int:
     do_something

答案 2 :(得分:0)

尝试isinstance方法(https://docs.python.org/3/library/functions.html#isinstance

>>> isinstance(5, int)
True
>>> isinstance("a", int)
False

在你的情况下写一个条件,比如,

if isinstance(number1, int):
    #do something
  

建议使用isinstance()内置函数来测试类型   一个对象,因为它考虑了子类。

答案 3 :(得分:0)

我将为这个答案假设Python 2.7。

我建议首先使用func map(_ array: [Int], _ transform: Int -> Int) -> [Int] { var result = [Int]() for element in array { result.append(transform(element)) } return result } // map can be used with other functions // and also closures which are functions // without a name and can be created "on the fly" func addByOne(i: Int) -> Int { return i + 1 } func square(i: Int) -> Int { return i * i } map([1,2,3], addByOne) // [2,3,4] map([1,2,3], square) // [1,4,9] // and so on... // with closures map([1,2,3]) { $0 + 1 } // [2,3,4] map([1,2,3]) { $0 * $0 } // [1,4,9] 将字符串作为字符串输入 然后尝试将其转换为整数。 Python会提出一个 异常,如果转换失败,您可以捕获并提示 用户再试一次。

以下是一个例子:

raw_input

这是一个示例执行,带有输入:

while True:
    try:
        s1 = raw_input('Enter integer: ')
        n1 = int(s1)
        # if we get here, conversion succeeded
        break
    except ValueError:
        print('"%s" is not an integer' % s1)

print('integer doubled is %d' % (2*n1))

在Python 3上,您需要使用$ python 33107568.py Enter integer: foo "foo" is not an integer Enter integer: 1.1 "1.1" is not an integer Enter integer: 0x23123 "0x23123" is not an integer Enter integer: 123 integer doubled is 246 而不是input;在 Python 2,raw_input将用户输入评估为Python表达式, 这很少是我们想要的。