【发布时间】:2016-09-15 19:24:53
【问题描述】:
我在尝试实现的 SWITCH /CASE 字典中遇到问题。我从here 得到了一个例子
我只是创建了一个交互式菜单,您可以在其中按照您选择的顺序同时选择多个选项。
ip = ["10.10.10.1","10.10.10.2"]
def display_menu():
os.system('clear')
main_title = "***** MENU *****"
print main_title.center(50,' ')
print("\n\n\t1. Ping Check\n\t2. CPU Load.")
#Allows you to choose more than one option
def pick_the_order():
display_menu()
order = map(int,raw_input("Choose (separated by spaces if more than one): ").split())
return order
一旦选择了选项,它就会调用适当的函数:
def echo_pick(ips1):
print "ECHO call", ips1
def snmp_pick(ips1):
print "SNMP Call", ips1
def numbers_to_functions_to_strings(argument):
global ip
for ips, option in zip(ip, argument):
print "Ip:",ips
print "option:", option
switcher = {
1: echo_pick(ips),
2: snmp_pick(ips)
}
switcher.get(option, "That is not a valid option")
print numbers_to_functions_to_strings(pick_the_order())
我面临的问题是,在运行程序时,它会为每个选项运行 for,无论您的选项是 1 还是 2。输出是这样的(选择选项 1 和 2 时):
Ip: 10.10.10.1
option: 1
ECHO call 10.10.10.1
SNMP Call 10.10.10.1
Ip: 10.10.10.2
option: 2
ECHO call 10.10.10.2
SNMP Call 10.10.10.2
None
我正在寻找的输出是这样的(选择选项 1 和 2 时):
Ip: 10.10.10.1
option: 1
ECHO call 10.10.10.1
ECHO call 10.10.10.2
Ip: 10.10.10.2
option: 2
SNMP Call 10.10.10.1
SNMP Call 10.10.10.2
None
是什么让 FOR 经历了所有的选择?即使我只选择 1 个选项,比如 ECHO 呼叫,它也应该只呼叫 echo_pick(ips1),但它仍然呼叫 snmp_pick(ips)
谁能帮助我解决我的逻辑的哪一部分工作不正常?似乎这是绕过选项中的值,并且无论如何都运行它们。
【问题讨论】:
标签: python for-loop switch-statement