繁体   English   中英

带有 while 和 if 语句的 Python For 循环:为什么在第一种情况下不返回?

[英]Python For loops with while and if statements: Why doesnt it return in the first case?

嘿伙计们,我知道这个问题可能看起来很愚蠢,但我才刚刚开始。 这是 Python 3.7。
无论如何,我已经编写了 2 个版本的代码,第二个版本有效,但是我在我认为不需要的地方添加了另一个 while 循环。 为什么第一个版本不起作用? 它迭代一个数字列表(nums)。

这是来自一个问题陈述:编写一个函数,该函数接受一个整数列表,如果它按顺序包含 007,则返回 True。

  • spy_game([1,2,4,0,0,7,5]) --> 真
  • spy_game([1,0,2,4,0,5,7]) --> 真
  • spy_game([1,7,2,0,4,5,0]) --> 假

我的第一个代码是这样的,它总是返回 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM