Python <和> <或>混淆

时间:2017-04-10 16:21:53

标签: python if-statement conditional-statements

这是我的第一篇文章。我是30岁时对编程语言的一个非常新的学习者。我正在学习的语言是python,我似乎不明白我的简单编程代码的基本缺陷是什么。

    a = input("What is the string?")
    b = input("Enter a number:")
    if(a == "Animal" and b == 1):
        print("No 1 Executed!")
    elif(a == "Dog"):
        print("No 2 Executed")
    else:
        print("No 3 Executed")

即使我打字&#34; Animal&#34;和1号,第3行被执行而不是行号。你能解释一下我的基本错误吗?谢谢!

4 个答案:

答案 0 :(得分:1)

b是一个字符串,如果将其与数字进行比较,则结果为false。你应该使用:

    if(a == "Animal" and b == "1"):

您还可以使用int(b)

将b转换为数字

答案 1 :(得分:0)

问题是输入函数返回一个String。这意味着变量b将是一个字符串,在你的if语句中,你要检查它是否等于一个数字。您可以通过多种方式解决此问题,例如将if语句更改为:

 if(a == "Animal" and b == "1"):

答案 2 :(得分:0)

输入命令将始终创建一个字符串,因此即使您输入1,python也会将该值解释为字符串。 b == 1期望b为数字,因此表达式始终为false。有两种方法可以解决它。

如果您想将b保留为字符串,只需将该表达式更改为与字符串进行比较,即b == "1"

如果您想将b作为数字,请在b = input("Enter a number:")之后立即将其转换为整数,只需添加一个新行:b = int(b)。现在您的表达式将按预期工作,但如果您输入的任何值都不是数字,程序将失败。

答案 3 :(得分:0)

执行最新行的原因是input返回str对象,该对象不等于数字。为了使其具有可比性,您需要将b转换为int

b = int(input("Enter a number:"))