首页 > 解决方案 > 在 Python 中为 Old Macdonald 使用列表和循环

问题描述

我正在做一项学校作业,遇到了一些麻烦。为此,我需要使用列表和循环让用户能够将动物和声音输入到两个列表中。然后循环应该在一个组中输出歌词,在适当的地方一次使用动物和声音,所以像:

在这个农场里,他养了一只狗……等等,正在播放这首歌,然后是下一首歌曲。在这个地方,他有一只猫……等等,通过列表中的所有动物和声音

现在它部分工作。用户可以输入三种动物和三种声音,然后打印将运行,但它只会输出列表中的最后一个条目。我希望它打印包含列表中所有条目的歌词。我还希望用户能够用 -1 取消,但我尝试过的一切都没有起作用。如果有人可以提供帮助,那就太好了!到目前为止,我已经在下面包含了我的代码:

for song in range (3):
    animal = input("Please Input an Animal: ")
    sound = input("Please Input a Sound: ")
    
    lyrics = "Old Macdonald had a farm, E- I- E- I- O," "And on that farm he had a %s, E- I- E- I- O." "With a %s - %s here,And a %s - %s there," "Here a %s, there a %s, Everywhere a %s - %s" "Old Macdonald had a farm, E- I- E- I- O!" % (animal, sound, sound, sound, sound, sound, sound, sound, sound)
print(lyrics)

标签: pythonpython-3.xlistloops

解决方案


Sunero4 已经解释了为什么只在最后一个用户条目中分配了动物和声音变量。我在他的答案中添加了一些格式,并在每次用户输入后添加到 sys.exit(0) 中,以检查是否输入了 -1 以便我们可以退出。请注意,我们使用“import sys”来调用此模块。我不知道你是否已经在课堂上讲过这个。如果没有,我建议你看看你当前的课程笔记是如何处理这个问题的。

import sys

lyrics_list = []

for song in range (3):
    animal = input("Please Input an Animal: ")
    if animal == '-1':
        sys.exit(0)
    sound = input("Please Input a Sound: ")
    if sound == '-1':
        sys.exit(0)     
    
    lyrics = "Old Macdonald had a farm, E- I- E- I- O," " And on that farm he had a %s, E- I- E- I- O." " With a %s - %s here, and a %s - %s there," " here a %s, there a %s, everywhere a %s - %s" " Old Macdonald had a farm, E- I- E- I- O!" % (animal, sound, sound, sound, sound, sound, sound, sound, sound)
    lyrics_list.append(lyrics)

for lyric in lyrics_list:
    print(lyric)

编辑:您可以将 sys.exit(0) 替换为 quit() ,它也会这样做。有关 sys.exit() 和 quit() 之间区别的更多详细信息,请查看Python 退出命令 - 为什么有这么多以及何时应该使用每个命令?


推荐阅读