从函数 Python 中获取错误的 return 值
Get the wrong return value from function Python
我目前正在研究 Python 函数,我需要从中获取 return 值来计算其他内容。
这是函数:
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,但是return只编辑了3,所以函数returns 1. 这是什么原因,我该如何解决?
这是我的终端输出:
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
你的终端输出是 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)
我目前正在研究 Python 函数,我需要从中获取 return 值来计算其他内容。 这是函数:
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,但是return只编辑了3,所以函数returns 1. 这是什么原因,我该如何解决?
这是我的终端输出:
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
你的终端输出是 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)