年至世纪函数

2024-03-29 14:35:19 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:给定一年,返回它所处的世纪。第一个世纪是从第一年到100年(含100年),第二个世纪是从101年到200年(含200年),等等

我的代码:

def centuryFromYear(year):
    century = year/100 
    decimal = int(str(century[-2:-1]))
    integer = int(str(century)[:2])

    if decimal > 0:
        return integer + 1
    else:
        return integer

print(centuryFromYear(2017))

这在某些情况下似乎不起作用。比如年份=2001或年份=2000。

有谁能提供一段更简单的代码吗?


Tags: 代码returnifdefintegeryearelseint
3条回答

采用整数除法,2000年和2017年都能正常工作:

1 + (year - 1) // 100  

您可以使用“数学”模块中提供的天花板函数来获得所需的解决方案。

def centuryFromYear(year):
 return math.ceil(year/100) 

在python 3中可以使用整除运算符//

def centuryFromYear(year):
    return (year) // 100 + 1    # 1 because 2017 is 21st century, and 1989 = 20th century

print(centuryFromYear(2017))  # --> 21

请注意:这并不代表公元前世纪,它使用的截止日期是Dec 31st xy99,有时严格定义为Dec 31st xy00
more info here

如果要设置更严格的Dec 31st xy00的截止值,则可能需要这样做:

def centuryFromYear(year):
    return (year - 1) // 100 + 1    # 1 because 2017 is 21st century, and 1989 = 20th century

print(centuryFromYear(2017))  # --> 21

相关问题 更多 >