最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python新手練習實例之萬年歷

 更新時間:2022年05月19日 11:41:40   作者:Begin?to?change  
最近進行python基礎培訓,課下作業(yè)制作萬年歷,之前沒做過,感覺里面還是有很多需要學的,下面這篇文章主要給大家介紹了關于python新手練習實例之萬年歷的相關資料,需要的朋友可以參考下

一、題目描述

A:先輸出提示語句,并接受用戶輸入的年、月。

B:根據(jù)用戶輸入的年,先判斷是否是閏年。

C:根據(jù)用戶輸入的月來判斷月的天數(shù)。

D:用循環(huán)計算用戶輸入的年份距1900年1月1日的總天數(shù)。

E:用循環(huán)計算用戶輸入的月份距輸入的年份的1月1日共有多少天。

F:相加D與E的天數(shù),得到總天數(shù)。

G:用總天數(shù)來計算輸入月的第一天的星期數(shù)。

H:根據(jù)G的值,格式化輸出這個月的日歷!

二、解析

1、分析

根據(jù)題目的八個要求,可以看出有些功能是重復或者說需要相互調(diào)用的,所以可以用模塊的思想將每個要求封裝成函數(shù);

2、功能

①判斷是否是閏年函數(shù)

根據(jù)閏年的判斷規(guī)則,如果年是4的倍數(shù),但不是100的倍數(shù)則是閏年或者是400的整數(shù)倍也是閏年,所以函數(shù)需要傳入一個參數(shù)(年份)

#判斷閏年
def B(year):
    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
        return True
    return False

②判斷輸入月的天數(shù)的函數(shù)

除了2月份會根據(jù)平年和閏年發(fā)生變化以外, 每月的天數(shù)是已經(jīng)確定好的;所以此時需要調(diào)用已經(jīng)定義好的判斷閏年的函數(shù)才能確定二月的天數(shù);所以函數(shù)需要傳入兩個參數(shù)(月份和年份)

此時有兩個小技巧,一個是判斷月份是那月,最開始用的是用相等加上or去判斷是否滿足條件,其實可以將大月或者小月的月份寫到一個列表中,然后再通過in去判斷;第二個是在確定天數(shù)時,可以先定義好一個常用值,然后根據(jù)月份去修改其值,最后返回常用值即可,這樣就少了幾行的賦值以及返回的代碼

def C(year,month):
    days = 31        #31天居多,設置為默認值
    if month == 2 :    #2月份要判斷是否是閏年
        if B(year):
            days=29
        else:
            days=28;
    elif month in [4,6,9,11]:     #判斷小月,只有30天
        days=30
    return days

③計算年份距離1900的總天數(shù)的函數(shù)

因為平年跟閏年的天數(shù)不一樣,所以要調(diào)用判斷閏年的函數(shù),確定其一年的總天數(shù);

總天數(shù)也就是相當于求每年的天數(shù)之和即可;所以需要去遍歷每年的天數(shù)求其總和即為結果;所以函數(shù)需要傳入一個參數(shù)(年份)

#某年到1900年的天數(shù)
def D(year:int):
    day = 0
    for i in range(1900,year):
        if B(i):
            day +=366
        else:
            day +=365
    return day

④ 月份距離1月1日的天數(shù)的函數(shù)

距離1月1日的天數(shù)也就是每月天數(shù)的總和,此時就先需要確定其每月的天數(shù),也就是需要調(diào)用之前定義的函數(shù),還需要知道的是其年份判斷是否閏年,所以函數(shù)需要傳入兩個參數(shù)(年份和月份)

遍歷每月的天數(shù)(通過調(diào)用函數(shù)而來),然后將其求和,得到的就是需要的結果

#某月到1月1號的天數(shù)
def E(year:int,month:int):
    days = 0
    for i in range(1,month):
        days += C(year,i)
    return days

⑤確定星期幾的函數(shù)

首先通過調(diào)用求年份距離的天數(shù)和月份的天數(shù)得到其天數(shù)總和,所以函數(shù)需要傳入兩個參數(shù)(月份和年份)

然后將總和加一(因為得到的是月份,而算天數(shù)時要獎當日計算再內(nèi)),然后對7求余即為星期幾

#確定星期幾
def G(year:int,month:int):
    total_day = D(year) + E(year,month) + 1
    week = total_day % 7
    return week

⑥格式化輸出日歷函數(shù)

輸出有兩種格式,一種是星期日在第一天,一種是星期日在最后一天;

第一種方式:星期日在第一天,根據(jù)得到的星期幾函數(shù)(也就是當月1號的星期幾函數(shù)),可以確定第一天的位置(也就是1的位置);

日歷也就是輸出1到總天數(shù)(根據(jù)月份確定)在對應的位置(星期幾),由于1號的位置已經(jīng)確定,而一號前面的則為空,所以單獨遍歷輸出空格,然后再輸出日歷;

一周對應的是七天,也就是每七天進行一次換行,所以還需要定義一個計數(shù)器

第二種方式:也就是星期日在最后一天,其他邏輯都是一樣的,只是在確定1號的位置不一樣;

本來周日的位置為第一個,但是現(xiàn)在變成了最后一個,也就是位置向后移了6位,所以只需要計算位置的時候先將其加上,然后再求余即可

#格式化輸出
def my_print(total:int):
    # iCount = 0
    # print("日\t一\t二\t三\t四\t五\t六")
    # for i in range((G(year, month) % 7)):
    #     print(end='\t')
    #     iCount += 1
    # for i in range(1, C(year, month) + 1):
    #     print(i, end='\t')
    #     iCount += 1
    #     if iCount  % 7 == 0:
    #         print('')
    iCount = 0
    print('一\t二\t三\t四\t五\t六\t日\t')
    for i in range(((G(year,month) + 6) % 7)):
        print(end='\t')
        iCount +=1
    for i in range(1,C(year,month) + 1):
        print(i,end='\t')
        iCount +=1
        if iCount % 7 == 0:
            print('')

三、源碼

# -*- coding: utf-8 -*-
from datetime import date
import calendar
 
# def B(year):
#    if year/4==0 and  year/400 !=0:
#        return True
#    elif year/100 == 0 and year/400 ==0 :
#        return True
#    else:
#         return False
#判斷閏年
def B(year):
    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
        return True
    return False
 
 
 
# def C(year:int,month:int):
#     days = 30
#     if month in [1,3,5,7,8,10,12]:
#         days = 31
#     elif month == 2:
#         if B(year):
#             days = 29
#         else:
#             days = 28
#     return days
#每月的天數(shù)
def C(year,month):
 
    days = 31        #31天居多,設置為默認值
    if month == 2 :    #2月份要判斷是否是閏年
        if B(year):
            days=29
        else:
            days=28;
    elif month in [4,6,9,11]:     #判斷小月,只有30天
        days=30
    return days
 
 
#某年到1900年的天數(shù)
def D(year:int):
    day = 0
    for i in range(1900,year):
        if B(i):
            day +=366
        else:
            day +=365
    return day
 
#某月到1月1號的天數(shù)
def E(year:int,month:int):
    days = 0
    for i in range(1,month):
        days += C(year,i)
    return days
 
#確定星期幾
def G(year:int,month:int):
    total_day = D(year) + E(year,month) + 1
    week = total_day % 7
    return week
 
#格式化輸出
def my_print(total:int):
    # iCount = 0
    # print("日\t一\t二\t三\t四\t五\t六")
    # for i in range((G(year, month) % 7)):
    #     print(end='\t')
    #     iCount += 1
    # for i in range(1, C(year, month) + 1):
    #     print(i, end='\t')
    #     iCount += 1
    #     if iCount  % 7 == 0:
    #         print('')
    iCount = 0
    print('一\t二\t三\t四\t五\t六\t日\t')
    for i in range(((G(year,month) + 6) % 7)):
        print(end='\t')
        iCount +=1
    for i in range(1,C(year,month) + 1):
        print(i,end='\t')
        iCount +=1
        if iCount % 7 == 0:
            print('')
 
if __name__ == '__main__':
    year = int(input('請輸入年:'))
    month = int(input('請輸入月'))
    my_print(G(year,month))

四、經(jīng)驗 

因為函數(shù)多,而且計算的結果不方便去口頭的驗算其結果,也就是說當結果不對時不知道是那出現(xiàn)的問題時,系統(tǒng)提供的

from datetime import date
import calendar

兩個模塊中有方法可以得出其天數(shù)以及星期幾的結果,這樣就可以查找到底是哪一步出現(xiàn)的問題了;也可以通過print去驗證單個的函數(shù)是否正確;

總結

到此這篇關于python新手練習實例之萬年歷的文章就介紹到這了,更多相關python實現(xiàn)萬年歷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 在Python的Bottle框架中使用微信API的示例

    在Python的Bottle框架中使用微信API的示例

    這篇文章主要介紹了在Python的Bottle框架中使用微信API的示例,作者還在文中給出了一個生成的微信可掃描的二維碼圖,需要的朋友可以參考下
    2015-04-04
  • Python Paramiko模塊的安裝與使用詳解

    Python Paramiko模塊的安裝與使用詳解

    最近閑著學習python,看到有個paramiko模塊,貌似很強大,所以從網(wǎng)上學習后總結了這篇文章,下面這篇文章就給大家介紹了Python中Paramiko模塊的安裝與使用,文中介紹的很詳細,相信對大家的學習很有幫助,有需要的朋友們下面來一起看看吧。
    2016-11-11
  • Django之使用celery和NGINX生成靜態(tài)頁面實現(xiàn)性能優(yōu)化

    Django之使用celery和NGINX生成靜態(tài)頁面實現(xiàn)性能優(yōu)化

    這篇文章主要介紹了Django之使用celery和NGINX生成靜態(tài)頁面實現(xiàn)性能優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • Flask 讓jsonify返回的json串支持中文顯示的方法

    Flask 讓jsonify返回的json串支持中文顯示的方法

    下面小編就為大家分享一篇Flask 讓jsonify返回的json串支持中文顯示的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • python 實現(xiàn)一個圖形界面的匯率計算器

    python 實現(xiàn)一個圖形界面的匯率計算器

    這篇文章主要介紹了python 實現(xiàn)一個圖形界面的匯率計算器,幫助大家更好的理解和學習如何制作gui程序,感興趣的朋友可以了解下
    2020-11-11
  • Python實現(xiàn) 版本號對比功能的實例代碼

    Python實現(xiàn) 版本號對比功能的實例代碼

    這篇文章主要介紹了 Python實現(xiàn) 版本號對比功能的實例代碼,文末給大家補充介紹了python 比較兩個版本號大小 ,需要的朋友可以參考下
    2019-04-04
  • python?Prophet時間序列預測工具庫使用功能探索

    python?Prophet時間序列預測工具庫使用功能探索

    Python?Prophet是一個強大的時間序列預測工具,由Facebook開發(fā),具有易用性和高度可定制性的特點,本文將深入介紹Python?Prophet的基本概念、安裝方法以及如何使用它進行時間序列預測,并提供豐富的示例代碼來幫助大家入門
    2024-01-01
  • Python 中字符串修飾符詳解

    Python 中字符串修飾符詳解

    這篇文章主要介紹了Python中字符串修飾符的相關知識,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • 通過gradio和攝像頭獲取照片和視頻實現(xiàn)過程

    通過gradio和攝像頭獲取照片和視頻實現(xiàn)過程

    這篇文章主要為大家介紹了gradio和攝像頭獲取照片和視頻實現(xiàn)過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Python實現(xiàn)對大量表格文件數(shù)據(jù)處理的方法詳解

    Python實現(xiàn)對大量表格文件數(shù)據(jù)處理的方法詳解

    這篇文章主要為大家介紹了如何基于Python語言實現(xiàn)對大量表格文件加以數(shù)據(jù)截取、逐行求差、跨文件合并等處理,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-05-05

最新評論

蕲春县| 青铜峡市| 开原市| 秦皇岛市| 塔河县| 高淳县| 常山县| 柳州市| 克拉玛依市| 枞阳县| 武陟县| 大荔县| 孝义市| 当涂县| 威信县| 南涧| 宜兴市| 深水埗区| 新巴尔虎右旗| 都兰县| 平罗县| 谷城县| 重庆市| 万山特区| 井陉县| 德令哈市| 洪江市| 嘉善县| 河津市| 彝良县| 桦川县| 乌恰县| 米泉市| 太仆寺旗| 罗定市| 分宜县| 定襄县| 贵州省| 安吉县| 长泰县| 石林|