2016-09-28 42 views
0

我使用以下来查看数据是否是整数,如果不是,它告诉我。有没有办法确定哪一个是不正确的,所以可以改变它,或者我必须为每个项目创建相同的循环?如何确定错误的数据类型

while i_input == True: 
    try: 
     i_pointstarget=int(pointstarget.get()) 
     i_ap1=int(ap1.get()) 
     i_ap2=int(ap2.get()) 
     i_ap3=int(ap3.get()) 
     i_ap4=int(ap4.get()) 
     i_ap5=int(ap5.get()) 
     i_ap6=int(ap6.get()) 
    except ValueError: 
     i_input=False 
     continue 
    else: 
     break 

感谢所有帮助:)

+1

...你有没有考虑写一个单独的函数来转换? –

+0

@ IgnacioVazquez-Abrams我不需要转换它,我只需要找到哪一个是错的 –

+0

如果你不需要转换它,那么你怎么一直每次都调用'int()'? –

回答

0

,而不是试图转换为int(顺便说一句int(1.23)作品,返回1),您也可以使用numbers

import numbers 
def is_integral(n): # actually not checking for int but also other int-equivalents 
    return isinstance(n,numbers.Integral) 

,如果你想查询如果你有一个无法转换为整数的数字(如int),你可以做

import numbers 
def exact_integral(n): # check if n can be exactly represented as an integer 
    return isinstance(n,numbers.Complex) and n==round(n.real) 
0

要知道变量的类型,您可以使用isinstance(variable_name, int),这将返回布尔值。