【问题标题】:problems with if in a functionif 在函数中的问题
【发布时间】:2016-06-18 12:21:58
【问题描述】:

我正在做一个简单的程序,只是为了让程序说一个数字是否是偶数,并且当 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 或一个单词时它返回'这是一个数字吗?'。它应该只在我写一个字符串时返回这个)。而且我不知道问题出在哪里。

【问题讨论】:

标签: python function if-statement


【解决方案1】:

这里有很多错误。

首先,使用isintance 来测试一个变量是否是一个int。不要使用type(t) != int

然后你多次执行int(t) 操作。

另外,t好像是全局var,不推荐使用,尤其是初学者。

最后你有一个 else ,但一个数字是奇数或偶数。没有其他选择。要测试一个数字是奇数,请使用if t & 1:

【讨论】:

  • 对不起,我只是一个菜鸟(我从月初开始编程),所以我对python不太了解,我什至不知道什么是isintance
  • isinstance 不应用于检查输入类型为raw_input 是否总是给出字符串
  • 是的,但是这里的问题是当我们想要直接检查raw_input 时。正如 OP 所说他是新手,我建议这样做。
【解决方案2】:

您可以使用if t.isdigit():

type(int) 返回永远不会是值的对象的类型。所以它永远是假的。

【讨论】:

    【解决方案3】:

    这是因为 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 所说,这个数字要么是奇数要么是偶数,所以你不需要第三个 else 语句 编辑:似乎 try...except 块之后的 elif 不起作用,所以我将其更改为 else

    【讨论】:

    • 哦,不如放一个 else 然后在里面放一个 if .. else 语句
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多