从其他几个函数中调用一个函数?



所以我写了几个函数,我想调用其中一个来使用,我在底部使用的输入代码要求函数名称,但没有做太多事情。我是新手,所以我可能在这里错过了一些东西,谢谢。

def summ(num1 = 0, num2 = 0):
num1 = int(input('första num: '))
num2 = int(input('andra num: '))
total = num1 + num2
print(total)
return num1 + num2

def kvad(num = 0):
num = int(input('kvadrerat nummer..'))
power = num**2
print(power)
return power

def udda(udd = 0):
udd = int(input('jämnt eller udda?'))
if udd % 2 != 0:
print('Udda..')
elif udd % 2:
print('jämnt')
return udda

import operator
def kalkylera(num1 = 0, num2 = 0):
num1 = int(input('first num'))
num2 = int(input('second num'))
#operators
subb = operator.sub(num1, num2)
addd = operator.add(num1,num2)
mull = operator.mul(num1,num2)
divv = operator.truediv(num1,num2)
oper8 = input('Vilket operation ska tillämpas?')
if oper8 == '-':
print(subb)
elif oper8 == '+':
print(addd)
elif oper8 == '*':
print(mull)
elif oper8 == '/':
print(divv)
call = input('vilket funktion?')
if call == summ:
summ()
elif call == kvad:
kvad()
elif call == udda:
udda()
elif call == kalkylera:
kalkylera()
functions = {
"summ": summ,
"kvad": kvad,
"udda": udda,
"kalkylera": kalkylera,
}
call = input('vilket funktion?')
function = functions.get(call)
if function is None:
raise RuntimeError('Unknown function to call')
function()

这是一种更明确的方法。它还允许您为每个函数指定不同的代码名称。

或者,您可以使用:

function = globals().get(call)

但这闻起来很香。显式比隐式(Python的禅(更好。

  • 下面的代码应该可以根据您的要求工作
  • 您需要使用单引号或双引号,否则它将被视为变量
import operator

def summ(num1=0, num2=0):
num1 = int(input('första num: '))
num2 = int(input('andra num: '))
total = num1 + num2
print(total)
return num1 + num2

def kvad(num=0):
num = int(input('kvadrerat nummer..'))
power = num**2
print(power)
return power

def udda(udd=0):
udd = int(input('jämnt eller udda?'))
if udd % 2 != 0:
print('Udda..')
elif udd % 2:
print('jämnt')
return udda

def kalkylera(num1=0, num2=0):
num1 = int(input('first num'))
num2 = int(input('second num'))
# operators
subb = operator.sub(num1, num2)
addd = operator.add(num1, num2)
mull = operator.mul(num1, num2)
divv = operator.truediv(num1, num2)
oper8 = input('Vilket operation ska tillämpas?')
if oper8 == '-':
print(subb)
elif oper8 == '+':
print(addd)
elif oper8 == '*':
print(mull)
elif oper8 == '/':
print(divv)

call = input('vilket funktion?')
if call == "summ":
summ()
elif call == "kvad":
kvad()
elif call == "udda":
udda()
elif call == "kalkylera":
kalkylera()

问题在于您应该用双引号包装summkvad以及其他方法。

call = input('vilket funktion?')
if call == "summ":
summ()
elif call == "kvad":
kvad()
elif call == "udda":
udda()
elif call == "kalkylera":
kalkylera()

但是通过eval做到这一点是一个更好的解决方案:

eval(f"{input()}()")

最新更新