2015-10-13 91 views
0

我要创建一小块功课的计算器和我询问的数字输入和将要使用的符号:如何测试某些东西是不是整数?

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不太好,所以很抱歉。 此外,如果此线程重复,也很抱歉。

+1

使用'isinstance(your_variable,int)' – Akavall

+0

我可以在这里建议'str.isdigit()'吗? https://docs.python.org/2/library/stdtypes.html#str.isdigit –

回答

0

要知道一个变量类型做type(var)

所以,基本上你需要做什么:

if type(variable)==int: 
    do_something 
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)),但也将接受(默默向下取整)浮点数...

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()内置函数被推荐用于测试类型 的对象,因为它需要的子类考虑在内。

0

我打算假设Python 2.7为这个答案。

我建议先获取输入为字符串,然后使用raw_input和 然后尝试将其转换为整数。如果转换失败,Python会引发异常,您可以捕获并提示 用户再次尝试。

下面是一个例子:

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 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 

在Python 3中,你需要使用input,而不是raw_input;在 Python 2中,input将用户输入评估为Python表达式 ,这很少是所期望的。

相关问题