Python 如何指示仅包含INT的条件

Python 如何指示仅包含INT的条件,python,Python,我刚开始学习python,需要一些帮助 假设我创建了一个简单的计算器,它所做的只是求和的平均值 a = input("First number") b = input("Second number") c = input("Third number") if(): avg = (a+b+c)/3 print'Average:%.2f' %avg else: ............ 我应该如何写if条件来表示当且仅当ab和c是int 我把它作为输入()是因为我想给它一个选项,让人

我刚开始学习python,需要一些帮助

假设我创建了一个简单的计算器,它所做的只是求和的平均值

a = input("First number")
b = input("Second number")
c = input("Third number")

if():
    avg = (a+b+c)/3
print'Average:%.2f' %avg
else:
  ............
我应该如何写if条件来表示当且仅当ab和c是int


我把它作为输入()是因为我想给它一个选项,让人们输入一些不是数字的东西,比如“ABC”。

如果测试a,b,c是整数,那么条件是:

if (isinstance( a , int ) and isinstance( b , int ) and isinstance( c , int )):
例如,代码如下所示:

a = "asdasd"
b = 2
c = 3
# if(int(a) and int(b) and int(c)):
if (isinstance( a , int ) and isinstance( b , int ) and isinstance( c , int )):
    print("integers")
else:
    print("not integers")
上述示例的输出:

not integers

对每个变量尝试此操作,第一次检查是否为INT,第二次检查是否为表示INT的STR:

if isinstance(a, int) or (str(a)[0] == '-' and str(a)[1:].isdigit()) or str(a).isdigit():
    print('integer')
else:
    print('not integer')

如果整数小于零,则替换bc。isdigit()返回false。python2.7

的可能副本不要在python2中使用
input
。您应该使用
a=int(原始输入(“第一个数字”)
等。好的,
input()
返回字符串,因此您可以使用
isdigit()
检查它,如果它返回True,则可以将其转换为字符串int@JohnLaRooy我不希望它在键入时将其转换为INT。我留下了一个选项,让那些输入非数字内容的人将错误信息输出。可能是@TomKarzes的副本,对不起,我搜索并测试了它,所以我觉得它是正确的。感谢您的反馈,我应该删除这个答案还是改进它?@TomKarzes我更正了答案,请检查,谢谢这更好,尽管在Python 2中(OP显然正在使用),它不会将long识别为整数。在Python 2中,您可以使用
isinstance(v,(int,long))
@TomKarzes感谢您的反馈和解释,我希望否决错误答案的人会投票更新正确答案。对不起,不是我。
isdigit()
不适用于负整数,因为它只检查是否存在数字字符。请解释为什么这有助于解决Q中的问题。这是一种检查整数的有趣方法,但符号只能是第一个字符并出现一次。现在,您将替换字符串中任何位置的多个字符,从而导致误报。我想你可以用
(a[0]='-'和a[1:].isdigit())或a.isdigit()
。是的,你是对的,我没有注意到任何索引都可能有多个“-”,更正了答案
if a.isdigit() and b.isdigit() and c.isdigit():
     avg = (int(a) + int(b) + int(c))/3
if isinstance(a, int) or (str(a)[0] == '-' and str(a)[1:].isdigit()) or str(a).isdigit():
    print('integer')
else:
    print('not integer')