[英]Python For loops with while and if statements: Why doesnt it return in the first case?
嘿伙计们,我知道这个问题可能看起来很愚蠢,但我才刚刚开始。 这是 Python 3.7。
无论如何,我已经编写了 2 个版本的代码,第二个版本有效,但是我在我认为不需要的地方添加了另一个 while 循环。 为什么第一个版本不起作用? 它迭代一个数字列表(nums)。
这是来自一个问题陈述:编写一个函数,该函数接受一个整数列表,如果它按顺序包含 007,则返回 True。
我的第一个代码是这样的,它总是返回 False:
z = 0
for i in nums:
while z < 2:
if i != 0:
break
else:
z += 1
break
if i != 7:
break
else:
return True
return False
为什么会发生这种变化,使它起作用?
z = 0
for i in nums:
while z < 2:
if i != 0:
break
else:
z += 1
break
while not z < 2:
if i != 7:
break
else:
return True
return False
非常感谢!
您的问题是您使用 while 循环的方式。 只要满足条件,就会执行while循环中的代码。 但是,您可以通过各种方式在 while 循环内调用 break 或 return。 所以你真正想要使用的是 if 语句而不是 while 循环。 然后,中断将按照您在第一个示例中预期的方式工作。 break 使程序跳出当前循环,即 while 循环。 但是为了让第一个示例正常工作,它应该跳出更高的 for 循环。 使用 if 而不是 while 应该可以解决这个问题。
也许尝试这样的事情:
z = 0
for i in nums:
if z < 2:
if i == 0:
z += 1
else:
if i == 7:
return True
return False
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.