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
我不認爲我明白你的意思是「返回打印」。我最好的猜測是「打印返回的值」 - ? –