簡體   English   中英

我的開關盒系統在 Python 中無法正常工作

[英]My switch case system isn't working out in Python

我是 Python 的新手。 我最近了解到 python 沒有開關盒系統。 相反,程序員必須使用字典數據類型制作一個。

我想使用 switch case 制作一個菜單系統,代碼如下:

switch={'1':func1(),'2':func2()} #func1() and func2() are two separate functions (menu options)
choice= input('choice : ')
switch[choice]

好吧,在我的開關系統中,無論我輸入什么作為“選擇”, func1()都只運行。

任何幫助將不勝感激:)

不要將func1()放入字典中,而是嘗試放入func1 (無括號)。

>>> switch = {'1' : func1,         # No parentheses here
...           '2' : func2 }        # ...or here.
>>> choice = input('choice : ')
>>> switch[choice]()               # But do put parentheses here.

通過將func1()放入字典中,您實際上是在調用 function 並將其結果存儲在字典中。 相反,如果您想通過字典調用 function,則需要存儲 function句柄(其變量名)並在索引到switch后調用它。

根據您的代碼,每次代碼運行時 func1 和 func2 都會運行。 問題是,當您聲明字典時,您正在執行/調用函數(因為在 function 名稱之后有() ,這就是“調用”函數的方式),而不僅僅是存儲對它們的鏈接/引用.

為了傳遞/存儲對 function 的引用而不調用它,只需鍵入其名稱,末尾不帶() 然后,要調用在變量/某處引用的 function,請添加括號。

這應該有效:

switch = {'1': func1, '2': func2} # func1() and func2() are two separate functions (menu options)
choice = input('choice : ')
switch[choice]()

請注意我是如何從第一行的函數中刪除()的。 另請注意,在最后一行,我通過在末尾添加()來調用存儲在switch中的 function ,並帶有鍵choice

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM