[英]How do I get return to print to console in this code?
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"
返回后的代碼將永遠不會執行。
您必須還原訂單。
就像是:
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"
當然,可以刪除初始if,因為float(int)
和float(float)
仍返回正常的float。
def distance_from_zero(distance):
try:
distance = float(distance)
print(distance)
return abs(distance)
except:
print ("invalid distance specified", distance)
return "Nope"
首先,為什么在調用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()
更好,因為isinstance()
支持繼承:
if isinstance(distance, (int, float)):
# it's a float or an int
distance = abs(distance)
還有兩點需要注意:
return
之前,請先調用print()
。 return
終止該函數並將執行返回給調用代碼,因此return
之后的任何語句都不會執行。 您似乎想在 abs()
之后打印distance的值,因此您需要將結果存儲在變量中(或執行兩次計算):
distance = abs(distance) print(distance) return distance
我認為Python在return
某些內容后會停止讀取定義,因此您應該交換print
並return
命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.