Python 为什么我的变量突然变为零?
这是我的代码,为什么我的变量,个人成本,使用打印语句正确打印,但在返回时变为非Python 为什么我的变量突然变为零?,python,Python,这是我的代码,为什么我的变量,个人成本,使用打印语句正确打印,但在返回时变为非 def determine_individual_menu_item(total_food_cost): individual_cost = total_food_cost food_item = input("Enter food item: ") if food_item == "1" or food_item == "2" or food_item == "3" or food_i
def determine_individual_menu_item(total_food_cost):
individual_cost = total_food_cost
food_item = input("Enter food item: ")
if food_item == "1" or food_item == "2" or food_item == "3" or food_item == "4" or food_item == "5" or food_item == "6" or food_item == "7":
food_item = int(food_item)
food_cost = get_cost_of_food_items(food_item)
else:
print("Please enter a food item on the menu.")
determine_individual_menu_item(total_food_cost)
yes_or_no = input("Is that the end of the order (y/n)? ")
if yes_or_no =="y":
individual_cost = acumulate_food_cost(individual_cost , food_cost)
print(str(individual_cost))
return individual_cost
if yes_or_no =="n":
individual_cost = acumulate_food_cost(individual_cost , food_cost)
determine_individual_menu_item(individual_cost)
如果Python函数到达其作用域的末尾,它将隐式返回
None
。因此,除非yes\u或\u no\u==“y”
,否则函数将返回None
。您可以通过在else
子句中添加return individual\u cost
,并在的末尾添加,如果是或否==“n”
块显然,在是或否==“y”
之外的情况下,此代码缺少返回语句,但问题声称打印语句执行正确,这意味着已经输入了y
,因此它应该到达现有的return
语句。如果这是准确的,那么我怀疑他们试图在函数范围之外检查名为individual_cost
的变量,而没有将返回值分配给调用者中的变量。让OP共享调用代码是值得的。OP可能每次都在测试多个项目。然后,第一个函数调用将采用n
路径,唯一将打印并返回的是最后一个递归调用,其中输入了y
。但是,由于这不会传播到第一个调用,因此第一个调用返回None