在python中分开几十年和几个世纪

时间:2016-09-12 13:09:10

标签: python

我有一个程序,我需要创建一个整年需要一年的程序,并将这个世纪与十年分开:

year=1970
decade=70
century=1900

我希望能够做到这一点:

year= new Year(1970)
dec= year.decade
cent=year.century

我知道我必须创建一个Year对象并实现这两种方法,但我的问题在于数学,我如何花一年时间来提取十年和/或世纪?

我曾尝试将其作为字符串传递给函数,然后在字符串中的最后两个值中构建一个整数,但是我遇到了数据类型的问题,并且想要一个'本机整数'这样做的方式。

提前致谢!

暴风雨

6 个答案:

答案 0 :(得分:2)

将年份除以100(仅限整数)。结果是世纪:

1972 / 100 = 19

(当然,再乘以100得到1900)。

剩余部分是该世纪内的一年:

1972 - (19 * 100) = 72

如果你想用10来获得一年中的十年,那就行了。

72 / 10 = 7

答案 1 :(得分:1)

您可以使用divmod内置功能:

--aapt path/to/aapt/binary

答案 2 :(得分:0)

好吧,你可以在字符串中转换你的年份,然后取两个第一个字符并添加00并取两个结束字符。那看起来像那样:

year = 1970
stringyear = str(1970)
century = stringyear[:2] + "00"
century = int(century)
print century
decade = stringyear[2:]
decade = int(decade)
print decade

可能有一种更简单的方法,但效果很好。

答案 3 :(得分:0)

实际上,年份%100很好地回归了十年。

这是我的程序的完成版本... ...

critters=('Rat','ox', 'tiger','rabbit', 'dragon', 'snake', 'horse', 'ram', 'monkey', 'rooster', 'dog', 'pig')

def docrit(yrint):
    modval=yrint%12
    return critters[modval]

def wieder():
    go=input('Again[y,n]')
    if go=='y':
      return True
    else:
      return False

def main():
    print('Chinese Zodiac Calculator')
    yob=int(input('year: '))
    cent=int(yob/100)
    decade=yob%100
    print('century: ',cent)
    print('decade: ',decade)
    ani=docrit(decade)
    print('the animal is ',ani)
    if wieder()== True:
      main()
    else:
      exit()

def exit():
    print("I'm done. Bye.")
    return 0

main()

答案 4 :(得分:0)

那呢?

import math

year = 1930

decade = math.floor((year-1)%100/10)*10

十年将是20,这是正确的,因为20是从1921年到1930年。是的,这很奇怪。但是,如果您想让1930属于30年代,只需去除-1

答案 5 :(得分:0)

这应该有效:

decade = year - (year%10)