我正在为程序做一个简单的程序,如果一个数字是否均匀,并且当raw_input不是一个数字时,程序会抱怨它:
def f():
t = raw_input('Enter a number and we will send an inormation: ')
if t != type(int):
print 'is this a number?'
elif int(t) % 2 == 0:
print t
print 'it is an even number'
elif int(t) % 2 > 0:
print t
print 'it is an odd number'
else:
print '???'
但是当程序运行时它只返回if条件(当我写90或一个单词时它返回'这是一个数字?'。它应该只返回这个,如果我写一个字符串)。我无法弄清楚问题出在哪里。
答案 0 :(得分:1)
这里有很多错误。
首先,使用isintance
来测试变量是否为int。请勿使用type(t) != int
。
然后多次执行int(t)
操作。
此外,似乎t是一个全局变量,不建议使用,特别是初学者。
最后你在结尾处有一个别的但是数字是奇数或偶数。没有其他选择。要测试是一个奇数使用if t & 1:
。
答案 1 :(得分:0)
您可以使用if t.isdigit():
type(int)
返回永远不会是值的对象类型。所以它总是错误的。
答案 2 :(得分:0)
这是因为raw_input总是返回一个字符串,即使只使用了数字。您需要将其类型化为int,然后检查它是奇数还是偶数,如果无法将其转换为int,则捕获异常。这就是你应该这样做的方式:
def f():
try:
t = int(raw_input("Enter a number"))
except ValueError:
print "is this an integer?"
else:
if t % 2 == 0:
print t
print " is even"
else:
print t
print " is odd"
如果未抛出异常,则仅在except块之后运行else。另外,正如@Julien Goupy所说,这个数字要么是奇数要么是偶数,所以你不需要第三个其他陈述 编辑:看来elif尝试后...除了块不起作用,所以我把它改成了其他