目标
利用Python创建一元或多元数学函数,并当输入自变量取值时,自动输出函数值。
一元函数
创建函数
该函数的参数有两部分,一是函数表达式,不可或缺,以字符串形式输入;二是自变量,也以字符串形式输入,且默认为'x'
。
def func(inputfunc,vari='x'):
代入自变量取值
以x =
(x为自变量名称,可替换为其他)的提示语句要求用户输入自变量的具体值,并替换函数表达式中的所有自变量为该输入值,进行计算,输出结果。这些步骤必须循环运行,直至出错,或用户没有输入为止。
def func(inputfunc,vari='x'):
while True:
try:
numinput = input('%s = ' % vari)
if numinput:
inputfunc1 = inputfunc.replace(vari, numinput)
print(eval(inputfunc1))
else:
print('break')
break
except:
print('break')
break
多元函数
创建函数
该函数的参数同样需要一个函数表达式和自变量名称,自变量个数可为任意正整数。
def mfunc(inputfunc,*varis):
设置提示语句
提示语句由按顺序的多个自变量名称和等号构成,多个自变量名称需由逗号隔开。用prom表示。
def mfunc(inputfunc,*varis):
while True:
try:
prom = ''
for vari in varis:
prom += vari + ', '
prom = prom[:-2]
except:
print('break')
break
代入自变量取值
用户输入多个自变量取值时也因用逗号隔开。假如输入的自变量取值数量与自变量个数不相等,则停止。相等时,才依次代入各个自变量取值到函数表达式中,并计算表达式,输出结果。
def mfunc(inputfunc,*varis):
while True:
try:
prom = ''
for vari in varis:
prom += vari + ', '
prom = prom[:-2]
numinputlist = input('%s = ' % prom).split(',')
if len(numinputlist) == len(varis):
inputfunc1 = inputfunc
for n in range(len(varis)):
inputfunc1 = inputfunc1.replace(varis[n], numinputlist[n])
print(eval(inputfunc1))
else:
print('break')
break
except:
print('break')
break
完整代码
def func(inputfunc,vari='x'):
while True:
try:
numinput = input('%s = ' % vari)
if numinput:
inputfunc1 = inputfunc.replace(vari, numinput)
print(eval(inputfunc1))
else:
print('break')
break
except:
print('break')
break
def mfunc(inputfunc,*varis):
while True:
try:
prom = ''
for vari in varis:
prom += vari + ', '
prom = prom[:-2]
numinputlist = input('%s = ' % prom).split(',')
if len(numinputlist) == len(varis):
inputfunc1 = inputfunc
for n in range(len(varis)):
inputfunc1 = inputfunc1.replace(varis[n], numinputlist[n])
print(eval(inputfunc1))
else:
print('break')
break
except:
print('break')
break
运行结果
>>> func('x**2+2*x+1')
x = 10
121
x = -7
-62
x = 5.5
42.25
x = this is an error!
break
>>> func('a-100', 'a')
a = 45
-55
a =
break
>>> mfunc('x*y*z+x+2*y+3*z', 'x', 'y', 'z')
x, y, z = 1, 2, 3
20
x, y, z = 0, 5**4, 12
1286
x, y, z =
break