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