为什么在条件之后赢得我的嵌套函数调用?

时间:2017-12-05 15:48:26

标签: python-2.7

尝试拨打' dialogue_b1_a()'在名为dialog_b1()的函数中使用输入函数。当我正常调用dialog_b1()时,提示符有效,但是在我输入begin之后,它只是说使用退出代码0'执行'进程,而不是在continue_b1 == begin时调用我输入的函数。我究竟做错了什么?谢谢。

def dialogue_b1():
    begin = 0
    print("You identify as a male.")
    print("...")
    continue_b1 = input('Type "begin" to continue.')
    if continue_b1 == begin:
        dialogue_b1_a()
    return

2 个答案:

答案 0 :(得分:1)

这里有问题。您错误地输入了问题中的代码,或者您应用了错误的标签“Python 2.7”。当我复制您发布的代码并在提示符下键入begin时,确实会尝试调用dialogue_b1_a()

永远不要在Python 2.7中使用input(),始终使用raw_input()

当您在响应begin调用时键入input()时,Python 2.7会评估您键入的内容作为表达式。这就是为什么你需要函数顶部的begin=0

另一方面,如果您在Python 3.x下运行此代码,则begin只需从"begin"调用返回字符串input(),条件就不匹配。在这种情况下,条件永远不会匹配,因为Python 3 input()将始终返回一个字符串。

修正了Python 2.7的代码:

def dialogue_b1():
    print("You identify as a male.")
    print("...")
    continue_b1 = raw_input('Type "begin" to continue.')
    if continue_b1 == "begin":
        dialogue_b1_a()
    return

或Python 3:

def dialogue_b1():
    print("You identify as a male.")
    print("...")
    continue_b1 = input('Type "begin" to continue.')
    if continue_b1 == "begin":
        dialogue_b1_a()
    return

答案 1 :(得分:0)

因此,您只需要将User更改为字符串:

INotifyPropertyChanged