我具有允许用户通过输入添加数据的功能。我想添加一个确认步骤,使他们可以回答“是”或“否”以继续。如果选择否,则应允许他们重新启动将数据添加到列表的功能。我还想确保他们回答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)
答案 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)