<blockquote>
<p>This is where I'm at now, but like I mentioned I feel like I'm over using the while loops making it simpler and it kind of feels like cheating.</p>
</blockquote>
<p>实际上,您过度使用了<code>while</code>循环,使其变得更加复杂。在</p>
<p>让我们追踪一下你的代码:</p>
<pre><code>counter = 0
while counter == 0:
print(ver1[0])
counter += 1
</code></pre>
<p>当您第一次命中<code>while</code>,<code>counter</code>将为0,因此它将运行一次。然后将counter递增到1,这样它就不会再运行了。在</p>
<p>因此,这与关闭<code>while</code>循环并编写以下内容的效果相同:</p>
^{pr2}$
<p>下一个循环是相同的:</p>
<pre><code>while counter == 1:
print(ver1[1])
counter += 1
</code></pre>
<p>这将始终只运行一次,因此不需要循环。在</p>
<p>其他人也一样。在</p>
<p>这意味着当您到达循环的末尾时,<code>counter</code>将始终是<code>4</code>。在</p>
<p>因此,您可以将所有代码替换为:</p>
<pre><code>print(ver1[0])
print(ver1[1])
print(ver1[2])
print(ver1[3])
counter = 4
</code></pre>
<hr/>
<p>或者,您也可以利用<code>while</code>来避免重复四次,如下所示:</p>
<pre><code>counter = 0
while counter < 4:
print(ver1[counter])
counter += 1
</code></pre>
<p>虽然实际上,用<code>for</code>语句来写可能更好:</p>
<pre><code>for counter in range(4):
print(ver1[counter])
</code></pre>
<p>或者,更好的是:</p>
<pre><code>for ver in ver1:
print(ver)
</code></pre>
<p>其中任何一个都可以通过不同的方式扩展到处理不仅仅是verse-1的行:</p>
<pre><code>counter = 0
while counter < len(ver1):
print(ver1[0])
counter += 1
counter = 0
while counter < len(chor1):
print(chor1[counter])
counter += 1
# etc.
</code></pre>
<p>……或者</p>
<pre><code>all_lines = ver1 + chor1 + ver2 + chor1
counter = 0
while counter < len(all_lines):
print(all_lines[counter])
counter += 1
</code></pre>
<p>……或者</p>
<pre><code>for line in ver1:
print(line)
for line in chor1:
print(line)
# etc.
</code></pre>
<p>……或者</p>
<pre><code>for part in (ver1, chor1, ver2, chor2):
for line in part:
print(line)
</code></pre>
<p>……或者</p>
<pre><code>all_lines = ver1 + chor1 + ver2 + chor1
for line in all_lines:
print(line)
</code></pre>
<p>……或者,如果你真的想让你的老师知道你的成绩远远领先于班上其他同学,或者是把你在网上发现的你不懂的代码交上来</p>
<pre><code>import itertools
print(*itertools.chain(ver1, chor1, ver2, chor1), sep='\n')
</code></pre>