我有一个脚本,首先给用户一个菜单,然后根据脚本运行的菜单选项。
def menu():
descriptions = ('SetupFeeDescr', 'OveruseFeeDescr', 'RecurrFeeDescr', 'CancellationFeeDescr')
planIds = input('Specify Plan Id. Multiple Ids seperated by comma: ')
print('\n Which description would you like to update? \n')
for i,j in enumerate(descriptions):
print(i+1,"-",j)
print("Q - Quit")
user_input = input('Enter your selection: ')
if user_input == '1':
descr = descriptions[0]
if user_input == '2':
descr = descriptions[1]
if user_input == '3':
descr = descriptions[2]
if user_input == '4':
descr = descriptions[3]
if user_input.lower() == 'q':
return
return(descr, planIds)
如何制作我的主要'永远循环直到' q'通过菜单给出?
if __name__ == '__main__':
prefixes = get_prefix()
descr, planIds = menu()
data, old = get_plan_rates(planIds, prefixes, descr)
replace_content(data, old, descr)
我不认为它是另一个线程的副本,因为我试图在一个定义上循环,并且脚本执行4个defs。
答案 0 :(得分:0)
只需创建一个无限while True
循环并询问用户输入内部。如果输入为"q"
,则调用break
并结束循环。对于你的代码,它将是这样的:
while True:
if user_input == '1':
descr = descriptions[0]
if user_input == '2':
descr = descriptions[1]
#....
if user_input == 'q':
break
注意:在每次迭代中,您都会覆盖descr
变量的内容。如果要累积多个选项,则必须使用可容纳许多值的数据结构,如列表。这将是:
descr = []
while True:
if user_input == '1':
descr.append(descriptions[0])
if user_input == '2':
descr.append(descriptions[1])
#....
if user_input == 'q':
break
然后将所有内容打包到menu()
函数中,最后返回descr
列表。
如果您要反复调用menu()
功能,直到用户输入' q',那么您可以这样做:
if __name__ == '__main__':
while True:
if main() == "stop":
break
def main():
prefixes = get_prefix()
result = menu()
if result is None:
return "stop"
descr, planIds = result
data, old = get_plan_rates(planIds, prefixes, descr)
replace_content(data, old, descr)
每次调用menu()
时,都会返回一对值,或者,如果用户输入为" q",则返回None
。然后你检测到这种情况并停止脚本。