没有价值"如何像计算机科学家一样思考3"行使

时间:2016-10-27 19:52:06

标签: python nonetype pyscripter

我正在学习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()

程序有效,并打印正确的值。然而,它还打印了一个"无"返回当天后的价值。

为什么会这样?我不明白为什么它打印"无"。

2 个答案:

答案 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_valueNone。一种解决方法是返回dias_semana中的值而不是直接打印任何内容。或者不在print函数中使用vacaciones函数。