Python 导致无限while循环的逻辑错误
当用户输入数字0并且程序执行任务0时,while循环不会像我预期的那样结束。这是为什么?我该如何修复它Python 导致无限while循环的逻辑错误,python,python-3.x,Python,Python 3.x,当用户输入数字0并且程序执行任务0时,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
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()
最好使用返回值与函数通信,而不是更改全局名称 另外,使用
True
和False
,不需要使用字符串比较
简而言之,从函数中返回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()
然后检查并适当结束。最好使用返回值与函数通信,而不是更改全局名称 另外,使用
True
和False
,不需要使用字符串比较
简而言之,从函数中返回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()
然后检查并适当结束。您需要在Task0中定义
全局结束
为什么不使用布尔值(真、假)?另外,请使用任务的列表
而不是在全局
中查找变量。您需要在Task0中定义全局结束
为什么不使用布尔值(对,错)?此外,请使用任务的列表
,而不是在全局
中查找变量。此外,正如@tobias__k在上面的评论中所说,使用有效任务的列表可能更安全。[task0,task1,…]
synchronizer在什么意义上更安全?窥视和更改globals
是完全安全的。这完全违反直觉,会引起混乱,但这里没有任何安全问题:-)此外,正如@tobias_k在上面的评论中所说,使用有效任务列表可能更安全<代码>[task0,task1,…]在什么意义上更安全@synchronizer?窥视和更改全局文件
是完全安全的。这完全违反直觉,会造成混乱,但是,这里没有任何安全问题:-)