给定年份,返回其所在的世纪。第一个世纪跨度为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返回的解释。
答案 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