带有while循环的Python作业打印输出

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (103)

我正在努力学习'while'循环和计数器。我理解如何在基本级别上使用它们但我觉得我在这种情况下过度使用它们并且可能有更好的初学者答案仍然使用while循环和if / elif / else语句。

基本上程序应该根据从0开始的计数器打印每个句子并打印句子1,然后在第4个句子之后打印合唱...然后它继续打印接下来的4个句子然后合唱两次在结束。

这就是我现在所处的位置,但就像我提到的那样,我觉得我已经过度使用了while循环使它变得更简单,这有点像作弊。

ver1 = ['sentence1', 'sentence2', 'sentence3', 'sentence4']
ver2 = ['sentence5', 'sentence6', 'sentence7', 'sentence8']
chor1= ['chorus1', 'chorus2']

counter = 0

while counter == 0:
    print(ver1[0])
    counter += 1

while counter == 1:
    print(ver1[1])
    counter += 1

while counter == 2:
    print(ver1[2])
    counter += 1

while counter == 3:
    print(ver1[3])
    counter += 1

#this if statement was my decision just to see if I could use it properly, but I'd like to do the entire thing with while loops if possible....but using if/elif/else statements isn't forbidden.     
if counter >= 5:
    print(ver1[3])
else:
    print(chor1[0])

我用if语句开始创建它但是老师问我是否尝试使用while循环作为家庭作业...这是我写的原始if / elif / else语句。

verse1 = "I came home and my dog was gone"
verse2 = "She took my dog and my truck"
verse3 = "oh no she didn't"
chorus = "ohh how times have changed"

truck = 'gone'
dog = 'gone'

if dog == "gone":
    print (verse1)
    print (chorus)
else:
    print(verse3)

if truck == 'gone':
    print (verse2)
    print (chorus)
else:
    print (verse3)

这只是该程序的第一部分,因为我不想继续使用它并浪费我的时间,如果有一个更好的答案,而不仅仅是复制/粘贴循环与几个小编辑,以确定打印的内容。

提问于
用户回答回答于

因为它的作业我不会给你代码。在这里使用while循环实际上是反直觉但它的工作原理。

如果计数器是0/1/2/3,那就是经文。否则,如果它的4,9,10,它是chrous。否则如果是5/6/7/8则是第2节。所以你可以在while循环中有一个带有3个if语句的while循环,用于不同的场景。所以每次在这个while循环中,你检查3个场景,然后增加计数器。

如果你想使用4 while循环,abarnert有一个很好的解决方案。但是你可以在一个while循环中使用我写的内容,但是你需要IF语句。

用户回答回答于

这就是我现在所处的位置,但就像我提到的那样,我觉得我已经过度使用了while循环使它变得更简单,这有点像作弊。

实际上,你过度使用while循环使它变得更复杂

让我们来看看你的代码:

counter = 0

while counter == 0:
    print(ver1[0])
    counter += 1

当你第一次点击它时whilecounter将是0,所以它将运行一次。然后你将`counter增加到1,所以它不会再次运行。

所以,这与你离开while循环并且只是写下来的效果相同:

print(ver1[0])
counter += 1

而下一个循环是相同的:

while counter == 1:
    print(ver1[1])
    counter += 1

这将始终只运行一次,因此您不需要循环。

对于其他人来说等等。

这意味着当你到达循环结束时,counter将永远是4

因此,您可以用以下代码替换所有代码:

print(ver1[0])
print(ver1[1])
print(ver1[2])
print(ver1[3])
counter = 4

或者,或者,您可以使用一些while来避免重复自己四次,如下所示:

counter = 0
while counter < 4:
    print(ver1[counter])
    counter += 1

虽然真的,这可能会更好地写一个for声明:

for counter in range(4):
    print(ver1[counter])

或者,甚至更好:

for ver in ver1:
    print(ver)

这些中的任何一个都可以扩展到以不同的方式处理不仅仅是第1节的行:

counter = 0
while counter < len(ver1):
    print(ver1[0])
    counter += 1
counter = 0
while counter < len(chor1):
    print(chor1[counter])
    counter += 1
# etc.

… 要么 …

all_lines = ver1 + chor1 + ver2 + chor1
counter = 0
while counter < len(all_lines):
    print(all_lines[counter])
    counter += 1

… 要么 …

for line in ver1:
    print(line)
for line in chor1:
    print(line)
# etc.

… 要么 …

for part in (ver1, chor1, ver2, chor2):
    for line in part:
        print(line)

… 要么 …

all_lines = ver1 + chor1 + ver2 + chor1
for line in all_lines:
    print(line)

......或者,如果你真的希望你的老师知道你要比其他同学都要先走得太远,要么把你在互联网上发现的代码转到你不明白的地方......

import itertools
print(*itertools.chain(ver1, chor1, ver2, chor1), sep='\n')

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励