if在函数中的问题

时间:2016-06-18 12:21:58

标签: python function if-statement

我正在为程序做一个简单的程序,如果一个数字是否均匀,并且当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或一个单词时它返回'这是一个数字?'。它应该只返回这个,如果我写一个字符串)。我无法弄清楚问题出在哪里。

3 个答案:

答案 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尝试后...除了块不起作用,所以我把它改成了其他