我目前正在尝试制作一个可以运行命令的程序。我想拥有它所以有一个命令列表,程序将接受我的输入命令,检查它是否在列表中,然后运行命令,如果它。如果不是,我希望它打印出无效的命令。
while 1 == 1:
command = input("Daisy: ")
commands = ['cmd', 'google']
if command == 'cmd' or 'google':
if command == 'cmd':
os.system("start")
elif command == 'google':
webbrowser.open_new('google.ca')
这是我现在所拥有的。我已经列出了这个列表,但你会在我的if语句中注意到我想要检查它是否等于cmd或谷歌。我将要有更多的命令然后这样,所以在使事情看起来漂亮的本质,我想知道是否有一种方法我可以让命令检查列表,运行命令,如果它在列表中,如果它不是,打印无效的命令。
答案 0 :(得分:3)
您可以为每个命令创建一个函数,并将要在字典中执行的命令和函数的名称存储起来。像这样:
def open_google():
webbrowser.open('google.ca')
commands = {'open_google': open_google}
while True:
# Get input here
if command in commands:
commands[command]()
这样您只需创建新函数,并将它们添加到字典中。主循环中的逻辑保持不变。
答案 1 :(得分:0)
我认为最通用的方式是使用字典和exec funktion
commands = dict()
commands['google'] = "webbrowser.open_new(\"google.ca\")"
commands['cmd'] = "os.system(\"start\")"
if key in commands:
exec(commands[key])
现在无法对此进行测试,但它应该可行
答案 2 :(得分:0)
我做了一个类似的程序,一个小控制台,以帮助我进行开发。
解决方案是if-elif-else语句,因为每个命令都与另一个命令不同。所以:
while 1 == 1:
command = input("Daisy: ")
if command == 'cmd':
os.system("start")
elif command == 'google':
webbrowser.open_new('google.ca')
elif command == 'new command':
# put here a new command
else:
print('Invalid Command')
数组命令和第一个if语句是不必要的,因为现在有" else"拦截所有无效命令。
如果你想查看我的代码,可以在第38行找到一个链接:DevUtils我管理命令。