附加列表的结束循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了附加列表的结束循环相关的知识,希望对你有一定的参考价值。

我需要创建一个程序,在附加列表中询问用户名,然后在用户键入“q:我创建了代码以询问名称但是在哪里结束时遇到问题。我的循环没有破坏当我认为它应该。它继续运行

我已经尝试使它成为for循环和while循环,并且在while循环中获得了更多成功,但我可能是不正确的。

# names of people that I know
names = ["Billy", "Trevor", "Rachel", "Victoria", "Steve"]
while True:
    names.append(input("Please enter your first name, "
                       "type q to exit: ", ))
    print(names)
    if names == "q":
        break

我希望结果如下:

Please enter your first name, type q to exit: jon
['Billy', 'Trevor', 'Rachel', 'Victoria', 'Steve', 'jon']
Please enter your first name, type q to exit: quit
['Billy', 'Trevor', 'Rachel', 'Victoria', 'Steve', 'jon', 'quit']
  • 而不是退出我希望程序退出。
答案

您应该在另一个名为name的变量中输入您的输入,并在看到q时打破循环。现在,您直接将输入附加到names列表

names = ["Billy", "Trevor", "Rachel", "Victoria", "Steve"]
while True:
    name = input("Please enter your first name, "
                       "type q to exit: ", )
    if name == "q":
        break
    names.append(name)
    print(names)
另一答案

你有正确的想法。但是一旦你从input()得到一个名字,你会立即将它插入你的列表,然后再检查你是否要退出该程序。所以解决方案是检查退出信号然后附加名称。

# names of people that I know
names = ["Billy", "Trevor", "Rachel", "Victoria", "Steve"]
while True:
    name = input("Please enter your first name, "
                       "type q to exit: ", )
    if name == "q":
        break
    else:
        names.append(name)
print(names)
另一答案

您正在将列表与字符串'q'进行比较,该字符串始终为false。你可以修改

while True:
    inp = input("Please enter your first name, "
                   "type q to exit: ", )
    names.append(inp)
    print(names)
    if inp == "q":
        break
另一答案

问题是您在检查之前是否已经附加到列表中以查看它是否为“q”。另外,根据您的问题,您只想退出'q'。不'退出'或'q'。如果你想检查'退出'那么你应该添加到你的if条件。

此外,执行此检查并仅在不是退出条件时附加。所以我建议:

# names of people that I know
names = ["Billy", "Trevor", "Rachel", "Victoria", "Steve"]
while True:
    name = input("Please enter your first name, type q to exit: ")
    if name == "q" or name == "quit":
        break
    names.append(name)
print(names)

如果你想坚持你的方法,那么在打破之前你想要删除最后一个元素,因为这将是'q'或'quit'。所以:

names = ["Billy", "Trevor", "Rachel", "Victoria", "Steve"]
while True:
    names.append(input("Please enter your first name, "
                   "type q to exit: ", ))
    print(names) #Printing here will still show you the name 'q' or 'quit'. Move this down too.
    if names[-1] == 'q' or names[-1] == 'quit':
        names.pop() #This will remove the 'q' or 'quit'
        break
另一答案

您在检查退出时将整个列表names"q"进行比较。相反,您想检查最近的输入是否为"q"

您可以通过检查列表中的最后一个元素来完成此操作,例如通过改变你的条件

if names[-1] == "q"

其余代码可以保持不变。

以上是关于附加列表的结束循环的主要内容,如果未能解决你的问题,请参考以下文章

使用变量作为列表名称附加到循环内的列表

如何在for循环中将数据附加到空列表?

如何使用循环将带有来自 googlesearch 的链接的列表附加到另一个列表?

片段未附加到我的活动

Python For循环仅将最后一个值附加到列表

在滚动结束时将更多项目附加到 listfragment