簡體   English   中英

從 function Python 獲取錯誤的返回值

[英]Get the wrong return value from function Python

我目前正在研究 Python function ,我需要從中獲取返回值來計算其他內容。 這是 function:

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    

這是來自 function 的調用:

stock = 123
sales_base_line=57.461538
days = 0
xd = calculate_stock(stock, sales_base_line, days)+2
print(xd)

由於在調用 function 的days是 64 時,我實際上希望變量xd是 66。然而,只返回 3,所以 function 返回 1。這是什么原因,我該如何解決?

這是我的終端 output:64 來自print(days)
1 來自print(calculate_stock(stock, sales_base_line, days))
output

關鍵在於遞歸和你使用它的方式。 嘗試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  

您的終端 output 是 64,因為 print(days) 在 else 塊中。 打印時,它不會退出 function。 如果您希望 function 在那里退出,您需要將 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM