gpt4 book ai didi

使用字典的 Python 控制台菜单

转载 作者:太空宇宙 更新时间:2023-11-03 18:18:15 24 4
gpt4 key购买 nike

我正在使用 Python 2.7 构建一个 Windows 应用程序,需要一个简单的控制台菜单,例如:

  1. 做某事
  2. 做点别的事情
  3. 退出

将会有几个菜单,主菜单将链接到其他菜单。因此,我试图避免出现一堆 if input == "1" 代码的情况。类似这个StackOverflow关联。我的下面的代码当前正在跳过主菜单并执行第二个菜单中的每个选项。我已经检查过它,但我没有明白它为什么会这样执行的逻辑。

computer = ""

# need a class for each of the options in power_menu
class power:
def logoff(self, computer):
print "logging off " + computer

def restart(self, computer):
print "restarting " + computer

def shutdown(self, computer):
print "shutting down " + computer

def set_computer():
global computer
#os.system("cls")
# optionally print the banner
computer = raw_input("Computer: ")
# check the computer is online

# move to the main menu with the computer parameter
menu().menu_main(computer)

def func_quit():
sys.exit()

def invalid(computer):
#os.system("cls")
print "INVALID CHOICE!"
menu().menu_main(computer)

class menu():
def menu_main(self, computer):
opts_main = {"1":("Power Options", self.menu_power(computer)),
"2":("Service Options", self.menu_service(computer)),
"3":("Service Tag & Warranty", self.menu_warranty(computer)),
"4":("User Options", self.menu_user(computer)),
"5":("Change Computer", set_computer),
"6":("Quit hd-con", func_quit)
}
for key in sorted(opts_main.keys()):
print "\t" + key + ": " + opts_main[key][0]
ans = raw_input("Selection: ")
try:
opts_main.get(ans, [None, invalid])[1]()
except Exception, e:
print e
#men_sel()

def menu_power(self, computer):
opts_power = {"1":("Logoff", power().logoff(computer)),
"2":("Restart", power().restart(computer)),
"3":("Shutdown", power().shutdown(computer)),
"4":("Main Menu", menu.menu_main),
"5":("Quit hd-con", func_quit)
}
for key2 in sorted(opts_power.keys()):
print "\t" + key2+": " + opts_power[key2][0]
ans2 = raw_input("Selection: ")
try:
opts_power.get(ans2)[1]()
#pow_sel()
except:
raise

我的上述输出如下所示。

Computer: asdf
logging off asdf
restarting asdf
shutting down asdf
1: Logoff
2: Restart
3: Shutdown
4: Main Menu
5: Quit
Selection:

我正在寻找有关在控制台菜单中使用字典的指导、对现有代码的修复,或者建议的方向来代替我正在查看的内容。

提前致谢。

最佳答案

您对字典的分配:

opts_main = {"1":("Power Options", self.menu_power(computer)), ...}

正在调用 menu_power,并将返回值(None)存储在元组中。您可以使用例如functools.partial避免这种情况:

from functools import partial 

opts_main = {"1":("Power Options", partial(self.menu_power, computer)), ...}

关于使用字典的 Python 控制台菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24645867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com