我目前正在研究一個 Python 函式,我需要從中獲取回傳值來計算其他東西。這是函式:
def calculate_stock(stock, stock_base_line, days):
sales_after_stock = stock - (stock_base_line/30)
if sales_after_stock > 0:
days =1
calculate_stock(sales_after_stock, stock_base_line, days)
else:
print(days)
return days
這是這個函式的呼叫:
stock = 123
sales_base_line=57.461538
days = 0
xd = calculate_stock(stock, sales_base_line, days) 2
print(xd)
由于在函式呼叫中days是64,我實際上希望變數xd是66。然而,只回傳3,所以函式回傳1。這是什么原因,我該如何解決?
這是我的終端輸出:64 來自print(days)
1 來自print(calculate_stock(stock, sales_base_line, days))
輸出
uj5u.com熱心網友回復:
您的終端輸出是 64,因為 print(days) 在 else 塊中。當它列印時,它不會退出該函式。如果您希望函式在那里退出,則需要將 return 移到 else 陳述句中。目前,它只是列印,然后繼續回圈并開始從 64 倒退到 1,這就是為什么你得到 1。
def calculate_stock(stock, stock_base_line, days):
sales_after_stock = stock - (stock_base_line/30)
if sales_after_stock > 0:
days =1
return calculate_stock(sales_after_stock, stock_base_line, days)
else:
print(type(days))
print(days)
return days
stock = 123
sales_base_line = 57.461538
days = 0
xd = calculate_stock(stock, sales_base_line, days) 2
print(xd)
uj5u.com熱心網友回復:
重點在于遞回以及您使用它的方式。嘗試return遞回的結果并將最后一個移動return到 else 塊中:
def calculate_stock(stock, stock_base_line, days):
sales_after_stock = stock - (stock_base_line/30)
if sales_after_stock > 0:
days =1
return calculate_stock(sales_after_stock, stock_base_line, days)
else:
return days
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/359892.html
上一篇:列印給定范圍內的BST密鑰
下一篇:如何將陣列變成陣列但像樹一樣
