在python中如何循环具有子菜单的菜单?
我正在尝试创建一个带有子菜单的主菜单。我想这样做,无论用户从主菜单到子菜单选择什么顺序,他们最终都会被引导回主菜单——也就是说,直到他们选择最后一个选项(3.按住并结束旋转) 这就是我被卡住的地方。现在,用户只能浏览一次菜单序列。如何使其成为重复循环在python中如何循环具有子菜单的菜单?,python,loops,menu,Python,Loops,Menu,我正在尝试创建一个带有子菜单的主菜单。我想这样做,无论用户从主菜单到子菜单选择什么顺序,他们最终都会被引导回主菜单——也就是说,直到他们选择最后一个选项(3.按住并结束旋转) 这就是我被卡住的地方。现在,用户只能浏览一次菜单序列。如何使其成为重复循环 #main menu playermenumain=raw_input("What would you like to do?\n (1) Buy\n (2)Sell\n (3)Hold and end turn ") if playermenu
#main menu
playermenumain=raw_input("What would you like to do?\n (1) Buy\n (2)Sell\n (3)Hold and end turn ")
if playermenumain=="1":
buyermenu=raw_input("In what area would you like to buy?"\n (1)Stocks\n (2) Bonds\ (3) Nevermind\n)
if buyermenu=="1":
stockamount=stockamount+500
elif buyermenu=="2":
bondamount=bondamount+500
else:
buyermenu=raw_input("In what area would you like to buy?"\n (1)Stocks\n (2) Bonds\ (3) Nevermind\n)
if playermenumain=="2":
sellermenu=raw_input("In what area would you like to buy?"\n (1)Stocks\n (2) Bonds\ (3) Nevermind\n)
if sellermenu=="1":
stockamount=stockamount-500
elif sellermenu=="2":
bondamount=bondamount-500
else:
sellermenu=raw_input("In what area would you like to buy?"\n (1)Stocks\n (2) Bonds\ (3) Nevermind\n)
if playermenumain=="3":
break
#main menu loop: no matter what is selected, player is directed back to main menu until option 3 (end turn) is selected:
while playermenumain=="1" or playermenumain=="2":
playermenumain=raw_input("What would you like to do?\n (1) Buy\n (2)Sell\n (3)Hold and end turn ")
continue
尝试使用带中断的while-True循环,而不是使用已有的while条件。例如:
def submenu_buy():
# Put your submenus here
pass
def submenu_sell():
# Put your submenus here
pass
while True:
playermenumain=raw_input("What would you like to do?\n (1) Buy\n (2)Sell\n (3)Hold and end turn ")
if playermenumain == "1":
submenu_buy()
elif playermenumain == "2":
submenu_sell()
elif playermenumain == "3":
break
尝试使用带中断的while-True循环,而不是使用已有的while条件。例如:
def submenu_buy():
# Put your submenus here
pass
def submenu_sell():
# Put your submenus here
pass
while True:
playermenumain=raw_input("What would you like to do?\n (1) Buy\n (2)Sell\n (3)Hold and end turn ")
if playermenumain == "1":
submenu_buy()
elif playermenumain == "2":
submenu_sell()
elif playermenumain == "3":
break
您应该将主菜单代码放入一个方法中,并在循环中调用该方法。每个子菜单也应该是一个方法调用,并且在返回上一个菜单时应该返回
您应该查找基本方法使用和程序流程;这更像是一个一般的编程概念,而不是一个特定的语言问题。它几乎对你将要做的每件事都至关重要,因此你应该花时间真正理解它。你应该把主菜单代码放在一个方法中,并在循环中调用该方法。每个子菜单也应该是一个方法调用,并且在返回上一个菜单时应该返回
您应该查找基本方法使用和程序流程;这更像是一个一般的编程概念,而不是一个特定的语言问题。这几乎对你将要做的每件事都至关重要,因此你应该花时间真正理解它。我有几点建议:
def menu(prompt, choices):
print '\n\n{0}\n'.format(prompt)
count = len(choices)
for i in range(count):
print '({0}) {1}'.format(i + 1, choices[i])
response = 0
while response < 1 or response > count:
response = raw_input(' Type a number (1-{0}): '.format(count))
if response.isdigit():
response = int(response)
else:
response = 0
return response
def buy(stockamount, bondamount):
response = menu('What to buy?', ['Stocks', 'Bonds', 'Nevermind'])
# Do something
def sell(stockamount, bondamount):
response = menu('What to sell?', ['Stocks', 'Bonds', 'Nevermind'])
# Do something
# ======================================================================
# Main program starts here
# ======================================================================
stockamount=10000
bondamount=10000
main_menu_response = 0
while main_menu_response != 3:
main_menu_response = menu('What to do?', ['Buy', 'Sell', 'End'])
if main_menu_response == 1:
buy(stockamount, bondamount)
elif main_menu_response == 2:
sell(stockamount, bondamount)
def菜单(提示、选项):
打印'\n\n{0}\n'。格式(提示)
计数=len(选项)
对于范围内的i(计数):
打印“({0}){1}”。格式(i+1,选项[i])
响应=0
当响应<1或响应>计数时:
response=raw_输入('键入一个数字(1-{0}):'。格式(计数))
if response.isdigit():
响应=int(响应)
其他:
响应=0
返回响应
def购买(股票金额、债券金额):
响应=菜单(‘买什么?’、[‘股票’、‘债券’、‘无需担心’))
#做点什么
def销售(库存金额、债券金额):
响应=菜单(‘卖什么?’,[‘股票’、‘债券’、‘无需担心’)
#做点什么
# ======================================================================
#主程序从这里开始
# ======================================================================
库存量=10000
债券金额=10000
主菜单响应=0
当主菜单响应时!=三:
main_menu_response=menu('to do?',['Buy','Sell','End'])
如果主菜单响应=1:
购买(股票金额、债券金额)
elif主菜单\响应==2:
出售(股票金额、债券金额)
我有几个建议:
def menu(prompt, choices):
print '\n\n{0}\n'.format(prompt)
count = len(choices)
for i in range(count):
print '({0}) {1}'.format(i + 1, choices[i])
response = 0
while response < 1 or response > count:
response = raw_input(' Type a number (1-{0}): '.format(count))
if response.isdigit():
response = int(response)
else:
response = 0
return response
def buy(stockamount, bondamount):
response = menu('What to buy?', ['Stocks', 'Bonds', 'Nevermind'])
# Do something
def sell(stockamount, bondamount):
response = menu('What to sell?', ['Stocks', 'Bonds', 'Nevermind'])
# Do something
# ======================================================================
# Main program starts here
# ======================================================================
stockamount=10000
bondamount=10000
main_menu_response = 0
while main_menu_response != 3:
main_menu_response = menu('What to do?', ['Buy', 'Sell', 'End'])
if main_menu_response == 1:
buy(stockamount, bondamount)
elif main_menu_response == 2:
sell(stockamount, bondamount)
def菜单(提示、选项):
打印'\n\n{0}\n'。格式(提示)
计数=len(选项)
对于范围内的i(计数):
打印“({0}){1}”。格式(i+1,选项[i])
响应=0
当响应<1或响应>计数时:
response=raw_输入('键入一个数字(1-{0}):'。格式(计数))
if response.isdigit():
响应=int(响应)
其他:
响应=0
返回响应
def购买(股票金额、债券金额):
响应=菜单(‘买什么?’、[‘股票’、‘债券’、‘无需担心’))
#做点什么
def销售(库存金额、债券金额):
响应=菜单(‘卖什么?’,[‘股票’、‘债券’、‘无需担心’)
#做点什么
# ======================================================================
#主程序从这里开始
# ======================================================================
库存量=10000
债券金额=10000
主菜单响应=0
当主菜单响应时!=三:
main_menu_response=menu('to do?',['Buy','Sell','End'])
如果主菜单响应=1:
购买(股票金额、债券金额)
elif主菜单\响应==2:
出售(股票金额、债券金额)
原始输入的参数中发生了什么?您显示的语法看起来不正确。raw\u input
的参数中发生了什么?您显示的语法看起来不正确。谢谢。。。这很有帮助!谢谢这很有帮助!