Python 3.7:为什么只打印列表中的最后一项?

Python 3.7 : Why is only the last item in a list printing?

我正在自学《Python速成班》第2版,遇到一个我无法解决的问题。我重读了本书的前几部分,搜索了互联网并搜索了其他 SO 答案。

官方书的答案用的是字典,我想用的是列表。

程序应该要求输入,将输入添加到列表中并继续重复直到被告知停止。当被告知停止时,应该打印整个列表。

我 运行 遇到的问题是只有列表中的最后一项在打印。

与其给出答案,不如给我一个提示,让我真正学习。

谢谢,

查德里克

active = True
while active == True:
    places = []
    place = input("\nIf you could visit one place in the world, where would you go? ")
    places.append(place)
    repeat = input("Would you like to let another person respond? (yes/no) ")
    if repeat == 'no':
        print(places)
        active = False

原因是因为您在每次迭代时都将列表重置为空。

尝试以下操作:

active = True
places = []
while active == True:
    place = input("\nIf you could visit one place in the world, where would you go? ")
    places.append(place)
    repeat = input("Would you like to let another person respond? (yes/no) ")
    if repeat == 'no':
        print(places)
        active = False

此外,由于 active 是一个布尔值,您只需要执行 while active:

所以:

active = True
places = []
while active:
    place = input("\nIf you could visit one place in the world, where would you go? ")
    places.append(place)
    repeat = input("Would you like to let another person respond? (yes/no) ")
    if repeat == 'no':
        print(places)
        active = False