在python 3.x中添加是/否确认

时间:2019-01-26 17:02:06

标签: python python-3.x

我具有允许用户通过输入添加数据的功能。我想添加一个确认步骤,使他们可以回答“是”或“否”以继续。如果选择否,则应允许他们重新启动将数据添加到列表的功能。我还想确保他们回答Y,是,y,是,N,NO,n,否。做到这一点的最佳方法是什么?我尝试了几种在线上找到的解决方案,但最终无法摆脱询问是或否的问题。预先感谢。

def item_list():  # Create a list 
    items = []
    item_int = 0
    while 1:
        item_int += 1
        item = input("\nEnter item %d or Press Enter: " % item_int)
        if item == "":
            break
        items.append(item)
    return items


items = item_list()
print(items)

4 个答案:

答案 0 :(得分:0)

我的答案是@B的扩展名。 Plüster,但它允许更大范围的输入并防止拒绝区分大小写的错字:

answer = input("Continue?")
if answer.upper() in ["Y", "YES"]:
    # Do action you need
else if answer.upper() in ["N", "NO"]:
    # Do action you need

答案 1 :(得分:0)

您可以创建一个包装器函数来调用您的其他函数。在包装函数中,使用另一个循环来确认项目。

# wrapper function
def item_list_wrapper():
    while True:
        # call your function at the start of each iteration
        final_items = item_list()

        # confirm with the user
        print('\nThese are your items:', ', '.join(final_items))
        user_input = input('Confirm? [Y/N] ')

        # input validation  
        if user_input.lower() in ('y', 'yes'):
           break
        elif user_input.lower() in ('n', 'no'):  # using this elif for readability
           continue
        else:
           # ... error handling ...
           print(f'Error: Input {user_input} unrecognised.')
           break

    return final_items

# your original function
def item_list():
    items = []
    item_int = 0

    while 1:
        item_int += 1
        item = input("\nEnter item %d or Press Enter: " % item_int)
        if item == "":
            break
        items.append(item)
    return items

然后像平常一样调用它。

items = item_list_wrapper()
print(items)

item_list_wrapper函数中,请注意带有items = item_list()的行每次都会更新列表。如果希望用户继续添加现有项目,则可以切换命令的顺序。

def item_list_wrapper():

    final_items = item_list()  # call the function at the start

    while True:
        # confirm with the user
        print('\nThese are your items:', ', '.join(final_items))
        user_input = input('Confirm? [Y/N] ')

        # input validation
        if user_input.lower() in ('y', 'yes'):
           break
        else if user_input.lower() not in ('n', 'no'):
           # ... error handling ...
           print(f'Error: Input {user_input} unrecognised.')
           break

        # call your function at the start of each iteration
        new_items = item_list()

        # add new items to previous items
        final_items += new_items

    return final_items

答案 2 :(得分:-1)

answer = input("Continue?")
if answer.lower() in ["y","yes"]:
     # Do stuff
else if answer.lower() in ["n","no"]:
     # Do other stuff
else:
     # Handle "wrong" input

答案 3 :(得分:-1)

不知道这是否足够有效。

    items = list()
    tr = [" Y", "YES", "y", "yes"]
    fs = ["N", "NO", "n", "no"]
    item_int = 0
    def item_list():  # Create a list
        global  item_int
        global items
        response = input("\nDo you want to enter data: ")
        if response == "":
            return
        if response in tr:
            item_int += 1
            item = input("\nEnter item %d or Press Enter: " % item_int)
            items.append(item)
        elif response in fs:
            item_int=0
            print("List cleared!")
            items.clear()
        item_list()
    item_list()
    print(items)