Python混乱

Python混乱,python,if-statement,conditional-statements,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 Ex

这是我的第一篇帖子。我在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")

即使我输入Animal和数字1,也会执行第3行而不是第1行。你们能解释一下我的基本错误是什么吗?谢谢

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

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

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

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

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

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


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

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


您不需要在python.MSeifert中使用ifs,您是对的,但是Fernando刚刚修改了他的代码。这个评论应该放在原来的问题下面,并直接交给阿桑·乌扎曼特汉克斯(Ahsan uzZamanThanks),你的回答非常详尽。这对我理解它有很大帮助。我会回来给你们更多的麻烦!
b = int(input("Enter a number:"))