我想嘗試優化代碼,但我的想法行不通。
我會從用戶那里收到一個值,這個值是一個數字,這個數字我會選擇一個要執行的函式。所以我創建了一個具有相同數字的物件,值是應該呼叫的函式的名稱。我在這里嘗試了幾種方法,但都沒有奏效,有人知道該怎么做嗎?馬上碼
def funcaoSerExecutada():
modules = {
1: "funcao1()",
2: "funcao2",
3: "funcao3",
4: "funcao4",
5: "funcao5",
}
userValue = 0
# Texto que será exebido na tela
print("===============================")
print("Escolha o módulo")
print("===============================")
print("1 - Estrutura: modelo_cantacom_vitrine_destinos_mod019_V3")
print("2 - Estrutura: cantacom_n_mod072_aereas_100_V2;")
print("3 - Estrutura: canta_destinos_vitrine_novo_modelo_estrutura;")
print("4 - Estrutura: canta_mod050_estrutura; Obs: Valores apenas para Clube Smiles")
print("5 - CANTACOM_100MILHAS-SMILESANDMONEY-VERTICAL_V1")
print("===============================")
# Pedir para o usuário digitar um valor, verificar se é um número e se essa op??o digitada existe
while (isinstance(userValue, str) or not userValue in modules):
try:
userValue = int(input("Digite um número: "))
if(not userValue in modules):
print("===============================")
print("Essa op??o n?o existe! Escolha uma das op??es acima!")
print("===============================")
except:
print("===============================")
print("Ops, digite um número!")
print("===============================")
def funcao1():
print("oi")
def runFunction():
modules[userValue]
runFunction()
uj5u.com熱心網友回復:
根據答案,我提出了我的解決方案
您可以將函式名稱不帶引號,但必須在其后宣告變數。所以我所做的就是把那個值放在括號里。
def funcaoSerExecutada():
# Func?es
def funcao1():
print("oi")
userValue = 0
modules = {
1: funcao1,
}
# Texto que será exebido na tela
print("===============================")
print("Escolha o módulo")
print("===============================")
print("1 - Estrutura: modelo_cantacom_vitrine_destinos_mod019_V3")
print("2 - Estrutura: cantacom_n_mod072_aereas_100_V2;")
print("3 - Estrutura: canta_destinos_vitrine_novo_modelo_estrutura;")
print("4 - Estrutura: canta_mod050_estrutura; Obs: Valores apenas para Clube Smiles")
print("5 - CANTACOM_100MILHAS-SMILESANDMONEY-VERTICAL_V1")
print("===============================")
# Pedir para o usuário digitar um valor, verificar se é um número e se essa op??o digitada existe
while (isinstance(userValue, str) or not userValue in modules):
try:
userValue = int(input("Digite um número: "))
if(not userValue in modules):
print("===============================")
print("Essa op??o n?o existe! Escolha uma das op??es acima!")
print("===============================")
except:
print("===============================")
print("Ops, digite um número!")
print("===============================")
def executarFuncao():
modules[userValue]()
executarFuncao()
uj5u.com熱心網友回復:
不要將名稱放入字典中,而是對函式本身的參考。
modules = {
1: funcao1,
2: funcao2,
3: funcao3,
4: funcao4,
5: funcao5,
}
您需要將函式定義放在此之前。你用().
def funcaoSerExecutada():
userValue = 0
# Texto que será exebido na tela
print("===============================")
print("Escolha o módulo")
print("===============================")
print("1 - Estrutura: modelo_cantacom_vitrine_destinos_mod019_V3")
print("2 - Estrutura: cantacom_n_mod072_aereas_100_V2;")
print("3 - Estrutura: canta_destinos_vitrine_novo_modelo_estrutura;")
print("4 - Estrutura: canta_mod050_estrutura; Obs: Valores apenas para Clube Smiles")
print("5 - CANTACOM_100MILHAS-SMILESANDMONEY-VERTICAL_V1")
print("===============================")
# Pedir para o usuário digitar um valor, verificar se é um número e se essa op??o digitada existe
while (isinstance(userValue, str) or not userValue in modules):
try:
userValue = int(input("Digite um número: "))
if(not userValue in modules):
print("===============================")
print("Essa op??o n?o existe! Escolha uma das op??es acima!")
print("===============================")
except:
print("===============================")
print("Ops, digite um número!")
print("===============================")
def funcao1():
print("oi")
modules = {
1: funcao1,
2: funcao2,
3: funcao3,
4: funcao4,
5: funcao5,
}
def runFunction():
modules[userValue]()
runFunction()
uj5u.com熱心網友回復:
def funcaoSerExecutada(value: int) -> Callable:
modules = {
1: funcao1,
2: funcao2,
...
}
return modules[value]
user_value = 1
funcaoSerExecutada(user_value)()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/427429.html
標籤:Python python-3.x
下一篇:安裝額外軟體包時請求失敗
