While 循环仅运行 elif 语句一次,并且不会在循环的其余部分中回流

问题描述 投票:0回答:1

我正在尝试编写一个程序,将用户输入的每一行附加到列表中。一旦用户输入“”,循环就会中断。当输入超过 1 行时,代码将按预期方式执行。

但是,当用户第一次输入“”时,有一个 elif 语句,要求用户输入“”以外的内容。

测试此部分后,程序会打印“输入列表”行,您可以在下面看到,但随后它会忽略程序的其余部分。如果再次输入 '',程序将退出并在应该执行循环时输出 [],直到出现非 '' 的用户输入。

此外,如果您确实在列表中输入了几行,程序不会删除位于 list1[-1] 的 ''。

所需的最终输出列表中不应有“”。

list1 = list()
def listt():
    counter = 0
    print("Please enter your shopping list:")
    while counter < 1:
        ask = input()
        list1.append(ask)
        if len(list1) > 1 and list1[-1] == '':
            list1.remove(list1[-1])
            counter += 1
            break
        elif len(list1) == 1 and list1[0] == '':
            print('Enter a shopping list:')
    print(list1)

listt()
python python-3.x list while-loop mu
1个回答
1
投票

请勿将空字符串添加到列表中,然后尝试将其删除。只是根本不附加它。

您可以利用空字符串是“假”的事实来方便地控制循环,如下所示:

def listt():
    shopping_list = []

    while item := input("Please enter your shopping list: "):
        shopping_list.append(item)
    
    return shopping_list

print(listt())
© www.soinside.com 2019 - 2024. All rights reserved.