如何解决如何在python函数def中比较数学函数的值
我正在编写一个代码来比较数学函数,并说给定x和y中哪个函数值最大
import math
def r(x,y):
r = 3 * math.pow(x,2) + math.pow(y,2)
return r
def b(x,y):
b = 2 * math.pow(x,2) + 5 * math.pow(y,2)
return b
def c(x,y):
c = -100 * x + math.pow(y,3)
return c
def compare():
x = float(input("Type the value of x: "))
y = float(input("Type the value of y: "))
r(x,y)
b(x,y)
c(x,y)
if r > b and c:
print("r is the biggest.")
return
elif b > r and c:
print("b is the biggest.")
return
elif c > b and r:
print("c is the biggest.")
return
compare()
但是出现以下错误:
TypeError:“功能”和“功能”的实例之间不支持“>”
解决方法
必须将每个函数的结果分配给变量。请尝试以下操作:
import math
def r(x,y):
r = 3 * math.pow(x,2) + math.pow(y,2)
return r
def b(x,y):
b = 2 * math.pow(x,2) + 5 * math.pow(y,2)
return b
def c(x,y):
c = -100 * x + math.pow(y,3)
return c
def compare():
x = float(input("Type the value of x: "))
y = float(input("Type the value of y: "))
R=r(x,y)
B=b(x,y)
C=c(x,y)
if R > B and R>C:
print("r is the biggest.")
return
elif B > R and B>C:
print("b is the biggest.")
return
elif C > B and C>R:
print("c is the biggest.")
return
compare()
,
这里有两个错误:
- 您需要比较函数的实际结果,而不是函数对象本身。
- 您无法将一个数值与其他两个数值的
and
进行比较;在这种情况下,您实际要测试的是一个比较,再加上另一个值是否非零!
我将使用max
函数来获取最大值,而不是构建复杂的条件链来完成相同的事情。这样,如果您添加其他功能,只需将其添加到列表中即可:
import math
def r(x,y):
return 3 * math.pow(x,2)
def b(x,y):
return 2 * math.pow(x,2)
def c(x,y):
return -100 * x + math.pow(y,3)
def compare():
functions = [r,b,c] # maybe this could be a parameter?
x = float(input("Type the value of x: "))
y = float(input("Type the value of y: "))
result,func_name = max((f(x,y),f.__name__) for f in functions)
print(f"{func_name} is the biggest.")
compare()
Type the value of x: 1
Type the value of y: 2
b is the biggest.
Type the value of x: 0
Type the value of y: 0
r is the biggest.
Type the value of x: -1
Type the value of y: -2
c is the biggest.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。