我不断得到一个NameError虽然我已经定义了一个术语,问题出在" day"在第28行。
def today():
day = input("What day is it?")
if "sunday" in day:
day = 0
elif "monday" in day:
day = 1
elif "tuesday" in day:
day = 2
elif "wednesday" in day:
day = 3
elif "thursday" in day:
day = 4
elif "friday" in day:
day = 5
elif "saturday" in day:
day = 6
else:
today()
today()
days_on_vacation = int(input("How many days will you be on vacation? "))
days_to_add_to_day = days_on_vacation % 7
day += days_to_add_to_day
我已经在函数today()
中给了一天值了吗?为什么我被告知它没有定义?
答案 0 :(得分:3)
您在函数中指定的名称是 locals ;它们在功能之外是不可见的。
分享该结果的最佳方法是返回函数中的值,以便您可以在调用时将其分配给变量:
def today():
# ...
return day
和
result = today()
然后result
变量保存函数返回的值。您也可以在那里使用名称day
,但那是一个与函数内部变量不同的变量。
你通过使用递归函数调用确实使问题变得复杂;然后你还需要确保沿着链传递递归调用的结果:
def today():
# ...
else:
return today()
return day
但是,最好不要依赖递归;一个简单的enless循环会做得更好;从函数返回将自动结束循环:
def today():
while True:
day = input('...')
# ...
else:
# not valid input, restart the loop
continue
# input was valid, return the result
return day