1
我正在嘗試執行SWITCH/CASE Disctionary中的問題。我從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())
我現在面臨的問題是,在運行程序時,它運行的每一個選項,無論你的選擇是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)
任何人都可以幫助我瞭解我的邏輯部分工作不正常嗎?它似乎是繞過選項中的值,並只是運行它們。
FunkySayu,謝謝你的回覆。它工作得很好,你很棒。 另外這將是字提到,我的主要問題是,而不是打印我本來應該使用返回,這是其中一個問題。 至於ZIP,我把它留在原來的代碼中,因爲我使用它來進入許多數組並連續運行,以便進行比較和匹配。 – Pines
另外要提到的是,您的解決方案幫助我解決了性能問題,並以不同的方式應用它。謝謝 – Pines
嗯,我想你可以將返回值存儲在列表中,並在每個函數調用時填充列表。你想挑選所有結果嗎?什麼是預期回報合成?它在你的問題中不是很清楚:) – FunkySayu