欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python計算指定日期是今年的第幾天(三種方法)

 更新時間:2020年03月26日 15:28:38   作者:ddl是第一生產(chǎn)力  
這篇文章主要介紹了Python三種方法計算指定日期是今年的第幾天,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

今天早上和騰訊面試官進(jìn)行了視頻面試,由于音量和網(wǎng)絡(luò)以及我的垃圾電腦的原因,個人感覺黃了...

最后面試官給了我一道簡單的計算題:指定日期是今年的第幾年

由于電腦卡到打字都打不動,我勉勉強(qiáng)強(qiáng)寫了一點,雖然面試官知道了我的想法也了解我的設(shè)備情況,最后沒讓我寫完

但是心里慚愧還是時候補(bǔ)齊了...話不多說回到主題吧

首先是輸入的問題,個人認(rèn)為分別輸入年月份是一件很初級的要求,就實現(xiàn)了形如“2020-3-26”的字符串解析的兩種方法,代碼如下:

def cal_date_str_spilt(date):
 ''''
 處理形如"2020-3-26"
 使用字符串的spilt方法解析
 '''
 _year = int(date.split('-')[0])
 _month = int(date.split('-')[1])
 _day = int(date.split('-')[2])
 return [_year, _month, _day]

def cal_date_str_time(date):
 '''
 使用time庫內(nèi)置函數(shù)strptime(string, format) return struct_time對象
 傳入?yún)?shù):字符串 + 處理格式
 '''
 _date = time.strptime(date, '%Y-%m-%d')
 _year = _date.tm_year
 _month = _date.tm_mon
 _day = _date.tm_mday
 return [_year, _month, _day]

然后判斷是否閏年

def judge_leap_year(year, month):
 # 只有閏年且月份大于2月才加多一天
 if year % 400 == 0 or year % 100 and year % 4 == 0 and month > 2:
  return 1
 else:
  return 0

主函數(shù)

def main():
 date = input("請輸入日期,以'-'分隔:")
 sum_1, sum_2 = 0, 0
 date_list_1 = cal_date_str_spilt(date)
 date_list_2 = cal_date_str_time(date)

 month_day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
 month_day_lep = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

 sum_1 += sum(month_day[:date_list_1[1] - 1]) + date_list_1[2] + judge_leap_year(date_list_1[0], date_list_1[1])
 sum_2 += sum(month_day[:date_list_2[1] - 1]) + date_list_2[2] + judge_leap_year(date_list_2[0], date_list_2[1])
 print('今天是今年的第' + str(sum_1) + '天')
 print('今天是今年的第' + str(sum_2) + '天')
 
 '''
 這一段是使用了datetime庫的方法,python本身就有處理該類問題的方法
 '''
 _sum = datetime.date(date_list_1[0], date_list_1[1], date_list_1[2])
 sum_3 = _sum.strftime('%j')
 if sum_3[0] == '0' and sum_3[1] == '0':
  print('今天是今年的第' + str(sum_3[-1:]) + '天')
 elif sum_3[0] == '0':
  print('今天是今年的第' + str(sum_3[-2:]) + '天')
 else:
  print('今天是今年的第' + str(sum_3) + '天')

if __name__ == '__main__':
 main()

以下是全部代碼:

import datetime
import time

def cal_date_str_spilt(date):
 ''''
 處理形如"2020-3-26"
 使用字符串的spilt方法解析
 '''
 _year = int(date.split('-')[0])
 _month = int(date.split('-')[1])
 _day = int(date.split('-')[2])
 return [_year, _month, _day]

def cal_date_str_time(date):
 '''
 使用time庫內(nèi)置函數(shù)strptime(string, format) return struct_time對象
 傳入?yún)?shù):字符串 + 處理格式
 '''
 _date = time.strptime(date, '%Y-%m-%d')
 _year = _date.tm_year
 _month = _date.tm_mon
 _day = _date.tm_mday
 return [_year, _month, _day]

def judge_leap_year(year, month):
 # 只有閏年且月份大于2月才加多一天
 if year % 400 == 0 or year % 100 and year % 4 == 0 and month > 2:
  return 1
 else:
  return 0

def main():
 date = input("請輸入日期,以'-'分隔:")
 sum_1, sum_2 = 0, 0
 date_list_1 = cal_date_str_spilt(date)
 date_list_2 = cal_date_str_time(date)

 month_day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
 month_day_lep = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

 sum_1 += sum(month_day[:date_list_1[1] - 1]) + date_list_1[2] + judge_leap_year(date_list_1[0], date_list_1[1])
 sum_2 += sum(month_day[:date_list_2[1] - 1]) + date_list_2[2] + judge_leap_year(date_list_2[0], date_list_2[1])
 print('今天是今年的第' + str(sum_1) + '天')
 print('今天是今年的第' + str(sum_2) + '天')

 '''
 這一段是使用了datetime庫的方法,python本身就有處理該類問題的方法
 '''
 _sum = datetime.date(date_list_1[0], date_list_1[1], date_list_1[2])
 sum_3 = _sum.strftime('%j')
 if sum_3[0] == '0' and sum_3[1] == '0':
  print('今天是今年的第' + str(sum_3[-1:]) + '天')
 elif sum_3[0] == '0':
  print('今天是今年的第' + str(sum_3[-2:]) + '天')
 else:
  print('今天是今年的第' + str(sum_3) + '天')

if __name__ == '__main__':
 main()

總結(jié)

到此這篇關(guān)于Python三種方法計算指定日期是今年的第幾天的文章就介紹到這了,更多相關(guān)python計算指定日期是今年第幾天內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Python實現(xiàn)一個簡單的注冊機(jī)并生成卡密

    基于Python實現(xiàn)一個簡單的注冊機(jī)并生成卡密

    這篇文章主要為大家詳細(xì)介紹了如何使用Python編寫一個簡單而強(qiáng)大的注冊機(jī),生成卡密來實現(xiàn)用戶注冊,從而輕松登錄應(yīng)用程序,有需要的小伙伴快可以參考下
    2023-12-12
  • python實現(xiàn)三種字符串格式化方法(%、format、f-string)

    python實現(xiàn)三種字符串格式化方法(%、format、f-string)

    本文主要介紹了python實現(xiàn)三種字符串格式化方法,主要包括%、format、f-string,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • Python中subprocess介紹及如何使用詳細(xì)講解

    Python中subprocess介紹及如何使用詳細(xì)講解

    在實際開發(fā)過程中,我們經(jīng)常會遇到需要從Python腳本中調(diào)用外部程序或腳本的場景,下面這篇文章主要給大家介紹了關(guān)于Python中subprocess介紹及如何使用詳細(xì)講解的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • python爬蟲多次請求超時的幾種重試方法(6種)

    python爬蟲多次請求超時的幾種重試方法(6種)

    這篇文章主要介紹了python爬蟲多次請求超時的幾種重試方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Flask框架 CSRF 保護(hù)實現(xiàn)方法詳解

    Flask框架 CSRF 保護(hù)實現(xiàn)方法詳解

    這篇文章主要介紹了Flask框架 CSRF 保護(hù)實現(xiàn)方法,結(jié)合實例形式詳細(xì)分析了Flask-WTF針對CSRF攻擊的防護(hù)相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • 深入理解Python虛擬機(jī)中列表(list)的實現(xiàn)原理及源碼剖析

    深入理解Python虛擬機(jī)中列表(list)的實現(xiàn)原理及源碼剖析

    在本篇文章當(dāng)中主要給大家介紹?cpython?虛擬機(jī)當(dāng)中針對列表的實現(xiàn),在?Python?中,List?是一種非常常用的數(shù)據(jù)類型,可以存儲任何類型的數(shù)據(jù),并且支持各種操作,如添加、刪除、查找、切片等,在本篇文章當(dāng)中將深入去分析這一點是如何實現(xiàn)的
    2023-03-03
  • 詳解用python -m http.server搭一個簡易的本地局域網(wǎng)

    詳解用python -m http.server搭一個簡易的本地局域網(wǎng)

    這篇文章主要介紹了詳解用python -m http.server搭一個簡易的本地局域網(wǎng),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python簡單實現(xiàn)整數(shù)反轉(zhuǎn)的畫解算法

    python簡單實現(xiàn)整數(shù)反轉(zhuǎn)的畫解算法

    這篇文章主要介紹了python簡單實現(xiàn)整數(shù)反轉(zhuǎn)采用了一個有趣的畫解算法,通過示例的題目描述來對問題分析進(jìn)行方案的解決,有需要的朋友可以參考下
    2021-08-08
  • 使用Python實現(xiàn)一個簡易計算器的新手指南

    使用Python實現(xiàn)一個簡易計算器的新手指南

    計算器是編程入門的經(jīng)典項目,它涵蓋了變量、輸入輸出、條件判斷等核心編程概念,通過這個小項目,可以快速掌握Python的基礎(chǔ)語法,并為后續(xù)更復(fù)雜的項目打下基礎(chǔ),本文給大家介紹了使用Python實現(xiàn)一個簡易計算器的新手指南,需要的朋友可以參考下
    2025-08-08
  • 使用Python構(gòu)建一個簡單的批處理GUI工具

    使用Python構(gòu)建一個簡單的批處理GUI工具

    在許多工作流程中,我們都會遇到需要重復(fù)執(zhí)行的一系列任務(wù),手動執(zhí)行這些步驟可能既繁瑣又容易出錯,自動化此類序列可以顯著提高生產(chǎn)力,所以本文小編給大家分享了如何使用Python構(gòu)建一個簡單的批處理GUI工具,需要的朋友可以參考下
    2025-04-04

最新評論