【问题标题】:Arithmetic with the Result of Python ProceduresPython程序结果的算术运算
【发布时间】:2016-05-02 06:42:54
【问题描述】:

我在 python 中定义了一个输出数字的过程,并希望在两个不同的输入上添加调用该过程的结果。但是,当我尝试对过程的结果执行算术运算时,会出现错误消息,

TypeError: 不支持的操作数类型 -: 'NoneType' 和 '无类型'。

我尝试使用 int() 函数,但显然这无法对“NoneType”结果进行操作。我将如何添加两个结果?

有问题的代码段是:

def leapYear(year):
    if year % 4 != 0:
        year = 365
    else:
        if year % 100 != 0:
            year = 366
        else:
            if year % 400 != 0:
                year = 365
            else:
                year = 366

def daysBetweenDates(year1, month1, day1, year2, month2, day2):
    dpY = leapYear(year2) - leapYear(year1)

这是我尝试解决 Udacity 问题的一部分(我对编码比较陌生)。

【问题讨论】:

    标签: python function debugging typeerror procedure


    【解决方案1】:

    您需要显式返回您希望使用的函数的结果。因此,您需要将以下行添加到 leapYear 函数的末尾:

    return year
    

    单级缩进。

    完整示例:

    def leapYear(year):
        if year % 4 != 0:
            year = 365
        else:
            if year % 100 != 0:
                year = 366
            else:
                if year % 400 != 0:
                    year = 365
                else:
                    year = 366
        return year
    
    def daysBetweenDates(year1, month1, day1, year2, month2, day2):
        return leapYear(year2) - leapYear(year1)
    

    如果没有显式返回值,Python 函数会返回 None 值。

    话虽如此,使用datetime 模块,尤其是datetime.timedelta 对象可以让您的生活更轻松。

    【讨论】:

      【解决方案2】:

      您忘记在leapYear() 过程中返回year,默认情况下它将返回None
      使用这个:

      def leapYear(year):
          if year % 4 != 0:
              year = 365
          else:
              if year % 100 != 0:
                  year = 366
              else:
                  if year % 400 != 0:
                      year = 365
                  else:
                     year = 366
          return year
      
      def daysBetweenDates(year1, month1, day1, year2, month2, day2):
          dpY = leapYear(year2) - leapYear(year1)
      

      【讨论】:

        猜你喜欢
        • 2021-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-13
        • 1970-01-01
        相关资源
        最近更新 更多