def distance_from_zero(distance):
if type(distance) == int or type(distance) == float:
return abs(distance)
print(distance)
else:
return "Nope"
print distance_from_zero(distance)
distance_from_zero(18)
答案 0 :(得分:2)
你应该在回来之前打印。返回后,无法访问print语句。
取代:
return abs(distance)
print(distance)
with:
print(distance)
return abs(distance)
而且:
return "Nope"
print distance_from_zero(distance)
with:
print distance_from_zero(distance)
return "Nope"
答案 1 :(得分:0)
返回后的代码永远不会被执行。
您必须恢复订单。
类似的东西:
{{1}}
答案 2 :(得分:0)
这是将打印语句放在正确位置的原始代码。请注意仍然显示的无限递归错误。
def distance_from_zero(distance):
if type(distance) == int or type(distance) == float:
print(distance)
return abs(distance)
else:
# This print forces infinite recursion because of distance
# print distance_from_zero(distance)
return "Nope"
这是一种测试方法
def distance_from_zero(distance):
if type(distance) == int or type(distance) == float:
print(distance)
return abs(distance)
else:
try:
distance = float(distance)
print(distance)
return abs(distance)
except:
print ("invalid distance specified", distance)
return "Nope"
当然,可以删除初始if,因为float(int)
和float(float)
仍会返回正常的浮点数。
def distance_from_zero(distance):
try:
distance = float(distance)
print(distance)
return abs(distance)
except:
print ("invalid distance specified", distance)
return "Nope"
答案 3 :(得分:0)
首先,为什么在调用abs()
之前需要检查参数的类型?打电话吧。 abs()
最了解它可以使用的操作数类型。如果它看到它无法处理TypeError
异常将被引发并且调用者可以处理它。
如果您确实想要处理函数中的错误,请使用try/except
块,而不是尝试猜测abs()
支持的类型,例如支持复数; abs(complex(1, 2))
完全有效:
try:
distance = abs(distance)
except TypeError as e:
print('{!r} is not a valid distance'.format(distance))
return None # or some other error
else:
print(distance)
return distance
最后,如果您确实希望仅限制int
和float
类型的支持,最好使用isinstance()
而不是type()
,因为它支持继承:< / p>
if isinstance(distance, (int, float)):
# it's a float or an int
distance = abs(distance)
还有其他几点需要注意:
print()
之前调用return
。 return
终止函数并将执行返回给调用代码,因此return
之后的任何语句都不会被执行。您似乎想在 abs()
之后打印距离的值,所以
您需要将结果存储在变量中(或执行两次计算):
distance = abs(distance)
print(distance)
return distance
答案 4 :(得分:0)
我认为Python在你return
之后停止阅读定义,所以你应该交换print
和return
命令。