使用while循环将项目添加到列表

时间:2019-12-23 22:27:26

标签: python python-3.x

我创建了一个简单的程序,用户可以在其中添加商品到他们的购物清单。添加项目后,系统会询问他们是否已完成。如果键入“是”,则列表中的项目将被打印,并且程序将退出。如果键入否,则可以将更多项目添加到列表中。问题是我只希望是或否。如果用户写了其他任何内容,我希望打印一条消息,说您只能写“是”或“否”。程序结束时,由于消息位于底部,因此我编写代码的方式已结束。我不确定将其放置在何处。我试图将其放置在while循环中,但这与条件相矛盾。

mylist = []
are_you_done = "no"
while are_you_done == "no":
    grocery_item = input("Add to Grocery ")
    are_you_done = input("Are you done? ")
    mylist.append(grocery_item)


if are_you_done == "yes":
    for item in mylist:
        print(item)
else:
    print("Please type Yes or No")

3 个答案:

答案 0 :(得分:1)

定义:

def ask_yes_no():
    while True:
        x = input()
        if x == "yes":
            return True
        if x == "no":
            return False
        print("Expecting yes/no")

然后以以下方式使用ask_yes_no()

grocery_items = []

while True:
    grocery_item = input("Add to Grocery ")
    print("Are you done? ", end="")

    if ask_yes_no():
        break

    grocery_items.append(grocery_item)

答案 1 :(得分:0)

我们需要在while循环中检查输入条件是否已正确满足。另外,我们应该将输入的大小写标准化。

mylist = []
are_you_done = "no"
while are_you_done == "no":
    grocery_item = input("Add to Grocery ")
    are_you_done = input("Are you done? ").lower()        
    if are_you_done not in ("no", "yes"):
          print("Please type Yes or No")
          are_you_done = "no"
    else:
          mylist.append(grocery_item)


for item in mylist:
    print(item)

答案 2 :(得分:0)

我相信这可以满足您在问题中指定的要求。请注意,该程序将保留在内部循环中,直到答案为是或否。还要注意,我们在问问题之前将杂货项目添加到列表中。

#!/usr/bin/python3

mylist = []
are_you_done = "no"

while are_you_done == "no":

    grocery_item = input("Add to Grocery ")
    mylist.append(grocery_item)

    while True:
        are_you_done = input("Are you done? ")
        if are_you_done in ['yes','no']:
            break
        else:
            print( 'please answer with yes or no' )


for item in mylist:
    print(item)