附加列表的结尾循环

时间:2019-04-10 03:03:31

标签: python python-3.x list

我需要创建一个程序,在附加列表中询问用户名,然后在用户键入“ 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']
  • 我希望程序退出而不是退出。

5 个答案:

答案 0 :(得分:2)

您应该在另一个名为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)

答案 1 :(得分:1)

您有正确的想法。但是,一旦您从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)

答案 2 :(得分:1)

问题在于您已经在检查列表是否为'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

答案 3 :(得分:0)

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

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

if names[-1] == "q"

其余代码可以保留不变。

答案 4 :(得分:0)

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

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