我正在学习python 3.4编程与伟大的书"如何像计算机科学家一样思考3"。我对我对练习5.14.2的回应有些疑惑,其内容如下:
你会在第3天(星期三)离开,度过一个美好的假期(也许是为了监狱,如果你不喜欢快乐的练习)。你在137次睡觉后回家。写一个程序的一般版本,询问起始日期号码和逗留时间,它会告诉你将要返回的星期几的名称。
我试图在本周的下一页中不使用任何涉及概念的编码技术,我的回答是:
def dias_semana(x):
if x == 1:
print("lunes")
elif x == 2:
print("martes")
elif x == 3:
print("miercoles")
elif x == 4:
print("jueves")
elif x == 5:
print("viernes")
elif x == 6:
print("sábado")
elif x == 7:
print("domingo")
else:
print("déjate de wear culiao")
def vacaciones():
diaempiezo = int(input("Día que empiezo"))
cuantosdias = int(input("días de vacaciones"))
díavuelta = (diaempiezo + cuantosdias) % 7
print(dias_semana(díavuelta))
vacaciones()
程序有效,并打印正确的值。然而,它还打印了一个"无"返回当天后的价值。
为什么会这样?我不明白为什么它打印"无"。
答案 0 :(得分:4)
您在dias_semana
内打印,然后打印它返回的内容 - 但您永远不会返回任何内容。未明确返回任何内容的函数的默认返回值为None
。
只需在dias_semana
函数中调用vacaciones
而不打印它,或者将print
内的dias_semana
语句更改为return
语句。
答案 1 :(得分:2)
您的函数dias_semana
不会返回任何内容,在这种情况下,函数会隐式返回None
。通过print(dias_semana(díavuelta))
,您实际执行以下操作:
return_value = dias_semana(díavuelta)
print(return_value)
而return_value
是None
。一种解决方法是返回dias_semana
中的值而不是直接打印任何内容。或者不在print
函数中使用vacaciones
函数。