所以我写了几个函数,我想调用其中一个来使用,我在底部使用的输入代码要求函数名称,但没有做太多事情。我是新手,所以我可能在这里错过了一些东西,谢谢。
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()
问题在于您应该用双引号包装summ
和kvad
以及其他方法。
call = input('vilket funktion?')
if call == "summ":
summ()
elif call == "kvad":
kvad()
elif call == "udda":
udda()
elif call == "kalkylera":
kalkylera()
但是通过eval
做到这一点是一个更好的解决方案:
eval(f"{input()}()")