我在 while 循环中有一个 if 语句,它应该不断检查条件,然后完成 if 语句中的内容。然而,代码被困在 if 语句中。 test1 是来自 html 应用程序的用户输入,它确实成功通过了。
def main():
if int(test1) in (1,2):
lux = 1
elif int(test1) in (3,4):
lux = 2
else:
lux = 1
main.a = 1
#open text files to log to
with open(path, "w") as f, open(path, "w") as g:
while main.a == 1:
if lux == 1:
response_mm = 1
#code gets stuck here
response_light = 1
else:
response_mm = 0
response_light = 0
print('Here')
#does not print
我尝试删除第二组 if else 语句,但这不起作用。我还尝试检查第二组 if else 语句中第一组 if else 语句的条件,但这不起作用。
这是问题的简单解释以及如何解决它的英文: 问题: 代码卡在 while 循环的 if 语句内,永远不会到达 print('Here') 语句。发生这种情况是因为 while 循环条件 main.a == 1 始终为 true,导致无限循环。 解决方案: 要解决此问题,您需要确保 while 循环可以在某个时刻终止。您可以通过多种方式做到这一点:
在循环内添加退出条件。 必要时使用break退出循环。 更改循环内 main.a 的值,使其最终变得不同于 1。
以下是如何修改代码的简单示例:
def main():
if int(test1) in (1,2):
lux = 1
elif int(test1) in (3,4):
lux = 2
else:
lux = 1
main.a = 1
#open text files to log to
with open(path, "w") as f, open(path, "w") as g:
while main.a == 1:
if lux == 1:
response_mm = 1
response_light = 1
else:
response_mm = 0
response_light = 0
print('Here')
# Add an exit condition, for example:
if some_condition:
main.a = 0 # This will make the loop terminate
通过此更改,代码应该能够退出 while 循环并继续程序的其余部分。