Python 3如果语句调用错误的函数

时间:2011-11-19 00:01:59

标签: python function if-statement

if action == 1:
    forage()
elif action == 2:
    forage()
else:
    display()

在不知道我正在尝试做的事情的背景下,这是我的问题:每当我输入1或2时,它调用display()而不是调用forage()。

很抱歉,如果这个问题太过于愚蠢而不是我想的Stackoverflow资料,但我似乎很多地遇到了这个问题,我希望它一劳永逸地解决,而且似乎无法找到解决方案。希望你们能帮助我。

4 个答案:

答案 0 :(得分:7)

这是difference between Python 2 and Python 3。在Python 2中,the input function会将字符串输入计算为Python表达式并返回整数1,因此您的示例将按预期工作。在Python 3中,input将返回未评估的字符串输入,例如'1'。因此,对于Python 3,您需要针对字符串值进行测试,而不是整数值。或者使用int()将字符串转换为整数,如其他答案所示。

答案 1 :(得分:3)

动作是字符串'1'而不是整数1吗?

答案 2 :(得分:0)

尝试:

action = int(input("What do you want to do? "))

答案 3 :(得分:0)

调试提示:检查您的输入。

print(
    type(action), ascii(action),
    type(1), ascii(1),
    type('1'), ascii('1'),
    '1' == 1
    )

Python 2:使用repr()代替ascii()