I wanted to try to optimize the code but my idea is not working.
I will receive a value from the user, this value will be a number, this number I will choose a function to be executed. So I created an object with those same numbers and the value the name of the function that should be called. I tried a few ways here but none worked, does anyone know how to do this? code right away
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()
CodePudding user response:
Based on the answers, I made my solution
You can leave the function name without the quotes, but the variable has to be declared after it. So what I did was I took that value and put the parentheses.
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()
CodePudding user response:
Don't put the name in the dictionary, but a reference to the function itself.
modules = {
1: funcao1,
2: funcao2,
3: funcao3,
4: funcao4,
5: funcao5,
}
You need to put the function definitions before this. And you call it with ()
.
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()
CodePudding user response:
def funcaoSerExecutada(value: int) -> Callable:
modules = {
1: funcao1,
2: funcao2,
...
}
return modules[value]
user_value = 1
funcaoSerExecutada(user_value)()