1. 程式人生 > >20170923線上程式設計之輸入年、月、日輸出這是一年的第幾天

20170923線上程式設計之輸入年、月、日輸出這是一年的第幾天

    最近的一週的時間一直忙於現場筆試了,線上筆試也都沒怎做,真好今天收到了一個算是比較期待的offer吧,就不想出去跑了,留在酒店休息休息,突然發現今天我居然有5個筆試,索性就做吧,早上10:00-12:00是4399和獵豹的兩場筆試,只好每場筆試分差不多一半的時間了,剛做完的是美麗聯合的筆試,題很簡單不到一小時就做完了,這裡簡單寫一下做的思路吧:大體有兩種方案,一種是直接使用python封裝好的模組函式即可,另一種是先判斷年是否是閏年,之後直接累計每月天數即可,都很簡單。

    下面是具體的實現:

#!usr/bin/env python
#encoding:utf-8

'''
__Author__:沂水寒城
功能:輸入一年的年月日輸出是一年中的第幾天
'''

import datetime
import time


runnian = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
commonnian = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]


def calculate_nth_day(y,m,d):
    '''
    藉助於python內建的模組直接進行轉化
    ''' 
    date=datetime.date(y,m,d)
    res=int(date.strftime('%j'))
    print '{0}年{1}月{2}日是{0}年的第{3}天'.format(y,m,d,res)


def judge(y): 
    '''
    判斷是否為閏年
    '''
    if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0:
        return True
    else:
        return False


def calculate_nth_day_direct(y,m,d,runnian,commonnian): 
    '''
    比較直接的方法
    '''
    if judge(y):
        res=sum(runnian[:m-1])+d
    else:
        res=sum(commonnian[:m-1])+d
    print '{0}年{1}月{2}日是{0}年的第{3}天'.format(y,m,d,res)

if __name__ == '__main__':
    one=raw_input().strip()
    if one:
        one_str_list=map(int, one.split(' '))
        y,m,d=one_str_list
        calculate_nth_day(y,m,d)
        calculate_nth_day_direct(y,m,d,runnian,commonnian)


結果如下:

2017 9 23
2017年9月23日是2017年的第266天
2017年9月23日是2017年的第266天

***Repl Closed***