多年以来对功能代码的理解

时间:2019-07-05 06:54:22

标签: python python-3.x

给定年份,返回其所在的世纪。第一个世纪跨度为1年至100年(含100年),第二个世纪为101年至200年(含200年)。对于1905年,输出应为CenturyFromYear(year)=20。对于year = 1700,输出应为CenturyFromYear(year)= 17。

解决方案:

def centuryFromYear(year):
    if year % 100 == 0:
        return year/100
    else:
        return int(year/100) + 1

我尝试了以下代码:

def centuryFromYea(year):
    return year % 100

我尝试了其他解决方案并收到错误。我需要解释为什么if语句设置为等于0,如果为true则返回year / 100。我还需要有关else返回的解释。

2 个答案:

答案 0 :(得分:0)

year % 100的值与year / 100相同,只有year % 100 == 0才是。

示例:如果year为2000,则两个表达式都将返回20。

如果不是这种情况,则表示年份不是100的整数倍。

  

%(模)运算符从第一个参数除以第二个参数得出余数。首先将数字参数转换为通用类型。右零参数引发ZeroDivisionError异常。参数可以是浮点数,例如3.14%0.7等于0.34(因为3.14等于4 * 0.7 + 0.34。)模运算符始终产生与第二个操作数具有相同符号(或为零)的结果;结果的绝对值严格小于第二个操作数的绝对值[2]。

答案 1 :(得分:-1)

if statement is for the cases like 1200,1300,1700, 

年份%100将得出0。

else语句适用于所有其他情况,例如    1201(13),1705(17),其中year%100不等于0。

Ex. 1201, solution: 
centuryFromYear(year) = 13
1201 % 100 = 1 which is not equal to zero
so it should return (1201/100) + 1  = 13

not : 1201/100 = 12