我正在学习Python,这是来自我喜爱的Udacity课程,“通过Python介绍计算机科学”。我的尝试在这里:
def biggest(x,y,z):
max = x
if y>max:
max = y
if z>max:
max = z
return max
def smallest(x,y,z):
min = x
if y<min:
min = y
if z<min:
min = z
return min
def set_range(x,y,z):
result==biggest-smallest
return result
print set_range(10, 4, 7)
我收到错误消息:
"line 18, in set_range
result=biggest-smallest
TypeError: unsupported operand type(s) for -: 'function' and 'function'"
为什么我收到此错误?
答案 0 :(得分:1)
我不知道你为什么两次使用相同的函数,但是你需要实际调用函数,传递参数并使用=
来分配非==
的相等性:
def biggest(x, y, z):
mx = x
if y > mx:
mx = y
if z > mx:
mx = z
return mx
def smallest(x, y, z):
mn = x
if y < mn:
mn = y
if z < mn:
mn = z
return mn
def set_range(x, y, z):
# use "=" for assignment not "==" for equality
result = biggest(x, y, z) - smallest(x, y, z)
return result
print set_range(10, 4, 7)
==
用于测试两个值是否相等,即1 == 1
,单个=
用于为名称赋值{{1} }}
最好避免遮蔽内置的max和min函数,以便更改函数中的名称。
答案 1 :(得分:0)
以下是一些更正
def biggest(x,y,z):
max = x
if y>max:
max = y
if z>max:
max = z
return max
def smallest(x,y,z):
min = x
if y<min:
min = y
if z<min:
min = z
return min
def set_range(x,y,z):
big = biggest(x,y,z) #assign the function result to a variable
small = smallest(x,y,z) #also let it inherit the inputs
result = big - small
print big
print small
return result
print set_range(10, 4, 7)