导致无限循环的逻辑错误

时间:2017-01-03 18:45:50

标签: python python-3.x

当用户输入数字0并且程序执行task0时,while循环不会像我预期的那样结束。为什么这样,我该如何解决?

def task0():
    print("Goodbye")
    end = "true"
end = "false"
while end != "true":
    print()
    tasknum = input("Which task would you like to see? ")
    print()
    task = "task" + tasknum
    methodToCall = globals()[task]
    result = methodToCall()

1 个答案:

答案 0 :(得分:4)

最好使用返回值与您的函数进行通信,而不是更改全局名称。

另外,使用TrueFalse,无需使用字符串比较。

简而言之,从您的函数返回True并将其分配给end

def task0():
    print("Goodbye")
    return True

end = False
while not end:
    print()
    tasknum = input("Which task would you like to see? ")
    print()
    task = "task" + tasknum
    methodToCall = globals()[task]
    end = methodToCall()

然后检查并正确结束。