【问题标题】:None value on "How to think like a computer scientist 3" exercise“如何像计算机科学家一样思考 3”练习没有价值
【发布时间】:2016-10-27 19:52:05
【问题描述】:

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

程序运行,并打印正确的值。但是,它还会在返回之日后打印“无”值。

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

【问题讨论】:

    标签: python nonetype pyscripter


    【解决方案1】:

    您在dias_semana 内打印,然后打印它返回的内容——但您永远不会返回任何内容。不显式返回任何内容的函数的默认返回值为None

    要么直接在vacaciones 函数中调用dias_semana 而不打印它,要么将dias_semana 中的print 语句更改为return 语句。

    【讨论】:

      【解决方案2】:

      您的函数dias_semana 不会返回任何内容,在这种情况下,函数会隐式返回None。通过print(dias_semana(díavuelta)),您实际上可以执行以下操作:

      return_value = dias_semana(díavuelta)
      print(return_value)
      

      return_valueNone。一种解决方法是返回dias_semana 中的值,而不是直接打印任何内容。或者不要在vacaciones 函数中使用print 函数。

      【讨论】:

        猜你喜欢
        • 2013-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-25
        • 1970-01-01
        • 2013-05-01
        • 1970-01-01
        相关资源
        最近更新 更多