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)
回答
您应该在返回之前打印。一旦你返回,你的打印语句不可达。
取代:
return abs(distance)
print(distance)
有:
print(distance)
return abs(distance)
这:
return "Nope"
print distance_from_zero(distance)
有:
print distance_from_zero(distance)
return "Nope"
谢谢!我还有一个简单的问题。在控制台中,我的代码最后总是没有。这是为什么? – INeedVerification
@JacobKJakielaszek您可以将控制台中输出的全部内容与控制台中的输出一起复制粘贴吗? – Atri
返回后的代码永远不会执行。
您必须恢复订单。
喜欢的东西:
print(distance)
return abs(distance)
这是原来的代码与打印语句放在正确的位置。请注意仍然出现的无限递归错误。
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"
当然,如果能够被丢弃,因为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"
它看起来像你遗漏了'距离'和'浮动(距离)之间的等号# – zondo
@zondo谢谢。我会修好它 – sabbahillel
首先,为什么在调用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()
因为是支持继承:
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
我想在你编辑了一些东西之后Python会停止读取定义,所以你应该交换print
和return
指令。
- 1. 为什么此JavaScript代码在控制台上打印“undefined”?
- 2. 如何打印“获取”方法返回值到控制台
- 3. 如何在Eclipse中物理打印代码和控制台?
- 4. 未在Eclipse中打印到控制台的Java代码
- 5. 如何用Dart打印到控制台?
- 6. 如何从XSJS打印到控制台
- 7. 如何使用phantomjs将控制台打印到控制台
- 8. Hamcrest - 打印到控制台
- 9. 在PyDev中打印到控制台
- 10. 在SignalR Hub中打印到控制台
- 11. 如何禁止在.NET中将控件打印到控制台?
- 12. 无法使用收益率返回打印到控制台
- 13. 如何解决此代码中铬的控制台此错误?
- 14. 如何修复此代码以打印此GridView控件?
- 15. eclispe不会打印多行代码到控制台
- 16. getElementById在代码中返回null但在控制台中工作
- 17. 如何回调而不打印到控制台ReactJS
- 18. Proguard的返回错误代码127控制台中看到
- 19. 在Windows中打印到控制台时需要回车吗?
- 20. Log4net不打印到控制台在wpf
- 21. 如何在断点上将控件打印到控制台上?
- 22. 如何在系统调用中打印到控制台(终端)
- 23. 如何使用MessageConsoleStream在插件中打印JSON到控制台
- 24. 如何将HTMLElement的属性打印到控制台而不是其HTML代码?
- 25. python:在控制台上打印多行代码
- 26. 在控制台上打印错误代码
- 27. 此打印代码如何工作?
- 28. nodejs如何打印控制台顶部
- 29. 如何以彩色打印控制台?
- 30. R-如何在不打印控制台的情况下返回命名列表
返回后的任何代码都未执行!在编程时记住这一点 –
目前,在递归调用之前放置'return'语句是防止无限递归的唯一方法。 – chepner
我不认为我明白你的意思是“返回打印”。我最好的猜测是“打印返回的值” - ? –