我实现了一个嵌套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
内部while循环似乎从
words
列表中构建line
到指定的length
。 当一行比规定的length
长时,它就是broken
,下一行继续与其余的单词组成。你知道吗这就是为什么从内部循环中断后附加到
output
列表会提供正确的结果。你知道吗当您在中断内部循环之前附加到
output
列表时,该列表可能会丢失一些行,因为只有line
比指定的长度长,因此会将中断添加到该列表中。你知道吗如果
while
条件在if
条件失败之前失败,则会出现这种差异。你知道吗第一个版本总是在循环结束时执行
output.append()
,不管是因为条件失败还是因为break
。你知道吗第二个只在循环结束时执行它,因为
if
条件失败,而您提前中断。你知道吗相关问题 更多 >
编程相关推荐