我有一些代码,即使我有其他条件应该结束循环,我也很难理解为什么循环是无限循环。
server {
listen 80 ;
server_name mysite.com ;
index index.html index.htm;
location / {
root /usr/local/var/www ;
# other opts here
}
}
我的问题是,我有一个else语句,将add更改为'False',因此循环应该停止,但由于某种原因它不会停止。
但是,如果我对代码进行了些微改动,它将停止:
def add1(*args):
total = 0
add = True
for num in args:
while add == True:
if num!=6:
total = total + num
else:
add = False
return total
add1(1,2,3,6,1)
基本上,添加一个休息时间。 我不了解专家级python编码员实际上如何在他们的脑海中解释“中断”。我已经阅读过一些休息时间的文章,但似乎仍然不太了解。 我不明白为什么需要“休息”,为什么“其他”不能满足需求。
答案 0 :(得分:1)
当您进入SELECT * FROM [{0}A1:A111]
循环时,for
获得值num
(1
中的第一个值)。然后,您进入args
循环(因为while
为True)。现在,由于add
不等于num
,因此您输入了6
块,因此if
块不执行。然后,您只需返回到else
循环,并且while
的值不变。然后,由于num
不等于num
(请记住它没有改变,它仍然是6
),因此再次输入1
块,依此类推,直到您终止程序。
添加if
时,退出最近的循环,在本例中为break
循环,因此while
循环继续进行,直到for
获得值num
,而6
变成add
。发生这种情况时,False
循环将不再执行。
答案 1 :(得分:0)
def add1(*args):
total = 0
add = True
for num in args:
if add == True:
if num!=6:
total = total + num
else:
add = False
break #breaking the for loop for better performance only.
return total
add1(1,2,3,6,1)
这将增加直到没有遇到6。您不必要地使用了while循环。您必须通过某些条件来打破无限循环,而该条件是num!= 6时。即使您的其他部分也可以打破无限的while循环,但是根据我的说法,while循环本身是不必要的。
答案 2 :(得分:0)
我相信您的代码的目的是总结* args中的元素,直到出现第6个数字为止。如果是这种情况,则while循环在这里是多余的。更改第一个代码段:
def add1(*args):
total = 0
for num in args:
if num != 6:
total = total + num
else:
break
return total
add1(1, 2, 3, 6, 1)
原始代码中实际发生的是,在while循环中迭代时, num 变量没有任何变化,因此它永远不会进入else部分,从而有效地卡在了第一个输入上参数不是6,请参见下文:
def add1(*args): # [1, 2, 3, 6, 1]
total = 0
add = True
for num in args: # first element is 1. num = 1
while add == True:
if num != 6: # num = 1 always
total = total + num
# adding break here gets out of the while loop on first iteration, changing num = 2
# and later to 3, 6...
else: # else is never reached
add = False
return total
add1(1, 2, 3, 6, 1)
答案 3 :(得分:-1)
您应更改以下代码:
来自
if num != 6:
到
if total != 6: