需要关于打破while循环的解释吗

2024-04-23 17:47:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我实现了一个嵌套while循环。以下是解决此问题的源代码:

While/Break working as expected

 while length < k and i < len(words):
  # Do something
  if len(word) + length < k:
    # Check condition
  else:
    break
 output.append(formatLine(line, length, k))

我试图建立一个基于条件的单词列表(包括空格在内的单词长度应该小于宽度k)。一旦达到边界,我就需要打破我正在做的while循环。你知道吗

但是-如果在中断之前将格式化的行添加到输出列表中,就不会得到预期的结果。如果我中断内部while循环,然后在从while循环出来之后将行附加到输出中,那么我得到的是我的解决方案中所期望的输出。你知道吗

所以我的问题是-为什么Python会以这种方式运行。在内部while循环外部初始化的变量“line”应该在中断之前具有相同的值;或者如果我中断内部while循环并在中断之后访问该值。但这并没有发生。你知道吗

While/Break not working as you would think

 while length < k and i < len(words):
  # Do something
  if len(word) + length < k:
    # Check condition
  else:
    output.append(formatLine(line, length, k))
    break

Tags: andlenifcheckaslinedolength
2条回答

内部while循环似乎从words列表中构建line到指定的length。 当一行比规定的length长时,它就是broken,下一行继续与其余的单词组成。你知道吗

这就是为什么从内部循环中断后附加到output列表会提供正确的结果。你知道吗

当您在中断内部循环之前附加到output列表时,该列表可能会丢失一些行,因为只有line比指定的长度长,因此会将中断添加到该列表中。你知道吗

如果while条件在if条件失败之前失败,则会出现这种差异。你知道吗

第一个版本总是在循环结束时执行output.append(),不管是因为条件失败还是因为break。你知道吗

第二个只在循环结束时执行它,因为if条件失败,而您提前中断。你知道吗

相关问题 更多 >