【问题标题】:Why does my function return None everytime it is called even though it has a return statement为什么我的函数每次调用时都返回 None ,即使它有一个 return 语句
【发布时间】:2019-05-14 08:59:44
【问题描述】:

我正在学习 Python 课程,这是我编写的代码

class Time:
    def __init__(self, hour, minute):
        self.hour=hour
        self.minute=minute

    def displayTime(self):
        return f"{self.hour} hours and {self.minute} minutes" 

    def addTime(self, s):
        temp = Time(0,0)
        temp.minute = self.minute + s.minute
        temp.hour = self.hour + s.hour
        if temp.minute>=60:
            temp.hour+=1
            temp.minute-=60
        temp.displayTime()

if __name__=='__main__':
    t1= Time(12,50)
    t2 = Time(11,36)

    print(t1.displayTime())
    print(t2.displayTime())

    print(t1.addTime(t2))

但是当我运行它时,最后一个打印语句打印None。但如果我将displayTime 中的return 更改为print,它会正确打印时间。

我做错了什么?

【问题讨论】:

  • 你应该在addTime方法最后一行添加return temp.displayTime()

标签: python python-3.x function class return


【解决方案1】:
def addTime(self, s):
    temp = Time(0,0)
    temp.minute = self.minute + s.minute
    temp.hour = self.hour + s.hour
    if temp.minute>=60:
        temp.hour+=1
        temp.minute-=60
    return temp.displayTime()  # <- this is the issue.

【讨论】:

  • 感谢您的回答。我一发布问题就得到了答案,并且在这里也写了一个答案。不过还是非常感谢您的回答。
【解决方案2】:

我一发布就得到了答案。为了将来参考其他人,我在这里发布答案。

在函数addTime中,我调用了函数displayTime

def addTime(self, s):
    ...
   temp.displayTime()

函数displayTime将值返回给函数addTime,而addTime不返回任何内容。因此,它打印出None

要更正它,我只需要返回 displayTime

def addTime(self, s):
    ...
   return temp.displayTime()

【讨论】:

    猜你喜欢
    • 2016-06-12
    • 1970-01-01
    • 2013-02-27
    • 2022-12-09
    • 1970-01-01
    • 2019-12-17
    • 2018-11-20
    • 1970-01-01
    • 2011-04-13
    相关资源
    最近更新 更多