内容标题25

  • <tr id='BB7ImJ'><strong id='BB7ImJ'></strong><small id='BB7ImJ'></small><button id='BB7ImJ'></button><li id='BB7ImJ'><noscript id='BB7ImJ'><big id='BB7ImJ'></big><dt id='BB7ImJ'></dt></noscript></li></tr><ol id='BB7ImJ'><option id='BB7ImJ'><table id='BB7ImJ'><blockquote id='BB7ImJ'><tbody id='BB7ImJ'></tbody></blockquote></table></option></ol><u id='BB7ImJ'></u><kbd id='BB7ImJ'><kbd id='BB7ImJ'></kbd></kbd>

    <code id='BB7ImJ'><strong id='BB7ImJ'></strong></code>

    <fieldset id='BB7ImJ'></fieldset>
          <span id='BB7ImJ'></span>

              <ins id='BB7ImJ'></ins>
              <acronym id='BB7ImJ'><em id='BB7ImJ'></em><td id='BB7ImJ'><div id='BB7ImJ'></div></td></acronym><address id='BB7ImJ'><big id='BB7ImJ'><big id='BB7ImJ'></big><legend id='BB7ImJ'></legend></big></address>

              <i id='BB7ImJ'><div id='BB7ImJ'><ins id='BB7ImJ'></ins></div></i>
              <i id='BB7ImJ'></i>
            1. <dl id='BB7ImJ'></dl>
              1. <blockquote id='BB7ImJ'><q id='BB7ImJ'><noscript id='BB7ImJ'></noscript><dt id='BB7ImJ'></dt></q></blockquote><noframes id='BB7ImJ'><i id='BB7ImJ'></i>

                52周存錢挑∏戰/52周存錢△挑戰(5)

                去社區提問

                簡介:本節課我們將完成5.0版本的周□ 存錢挑戰小程序,為它增加輸入日期自動判斷的新功能。

                案例描述

                又見面啦~

                今天是存錢挑戰↙案例的最後一小節課程。我們要繼續給程序增加新功能,使它可以根據用戶輸入的日期,自動判斷出是一年中的第幾周,然後輸出相應存款金額。

                好了,話不多說,趕快進入案例分析時間吧。

                案例分析

                實現這個小目標需要分兩個步驟:

                1. 判斷用戶輸入的日期是一年中的第幾周。
                2. 根據周數得到存錢金額。

                於是我們開動機智的小腦瓜,步驟1的問題解決起來好像有些復雜,年份分為○平年閏年,每個月的天數不同,要根◣據輸入的日期判斷周數貌似暫時沒有比較簡單的解決思路。

                相比之下,步驟2就顯得十分簡單。之前我們介淡然一笑紹過列表的相關知識,每周的存款金額可以存放在列表中,直接從列表中提取相關數據就可以了。

                不如我們先把簡單的步驟解決,再花時間處理復雜的要求(戰術性迂回前進)。

                先來回顧一下上節課的代碼:

                1. import math
                2. def save_money_in_n_weeks(money_per_week, increase_money, total_week):
                3. """
                4. 計算n周內的存款金額
                5. """
                6. money_list = [] # 記錄每周存款數△的列表
                7. for i in range(total_week):
                8. money_list.append(money_per_week)
                9. saving = math.fsum(money_list)
                10. # 輸出信息
                11. print('第{}周,存入{}元,賬戶累計{}元'.format(i + 1, money_per_week, saving))
                12. # 更新下一周的存錢金∑ 額
                13. money_per_week += increase_money
                14. return saving
                15. money_per_week = float(input('請輸入每周的存入的金∴額:')) # 每周的存入的金額
                16. increase_money = float(input('請輸入每周的遞▆增金額:')) # 遞增的金額
                17. total_week = int(input('請輸←入總共的周數:')) # 總共的周數
                18. # 調用函數
                19. saving = save_money_in_n_weeks(money_per_week, increase_money, total_week)
                20. print('總存款金額', saving)

                列表money_list[]中記錄了每周存款數,例隨后臉色一變如以第一周10元,每周遞增10元的方式攢錢5周,money_list中的信息ㄨ如下:

                這時候如果我們想知道第二周存入了多少錢,只需要取出↑列表中的第二個元素。

                同樣地,每周的累計金額也可以存儲在列表中,這樣當我們需要查看金額時,就能訪問列表中的元素得到結果。

                定義一個列表saved_money_list,用來存儲每周累計金額。

                1. saved_money_list=[]

                變量saving在循環中經過一次次累⌒加,得到最終存錢總數。在循環中把它的值添加到剛才創建的列表saved_money_list,就可以記錄每周的存款金額。

                把相應的代碼添加到函數中,這時候返→回值應該是記錄賬戶累計的列表。

                1. import math
                2. def save_money_in_n_weeks(money_per_week, increase_money, total_week):
                3. money_list = [] # 記錄每周存款數的列表
                4. saved_money_list =[] #記錄每周賬戶累Ψ計
                5. for i in range(total_week):
                6. money_list.append(money_per_week)
                7. saving = math.fsum(money_list)
                8. saved_money_list.append(saving)
                9. # 輸出信息
                10. #print('第{}周,存入{}元,賬戶累計{}元'.format(i + 1, money_per_week, saving))
                11. # 更新下一周的存錢金額≡
                12. money_per_week += increase_money
                13. return saved_money_list

                主程序還需要用戶提供‘查看第幾周累計金額’的信息,根據這個信息從列表中訪問¤元素,打印出結果。

                用變量week_num接收用戶輸★入的信息,周數應該是整型數據,別忘記對它類型轉換:

                1. week_num = int(input('請問您想查看第幾周的賬戶【累計金額?'))

                我們通過索引的方式訪問列表中的元素,列表的索引值從0開始

                獲取第1周存款累計々金額,列表訪問元素索引值這三十三重天:0

                獲取第2周存款累〖計金額,列表訪問元素索引值:1

                獲取第3周存款累計金額,列表訪問元素索引值:2

                ……

                找到規律了嗎~周數week_num-1就是列表中對應周數累計金額的索引值。saved_money_list[week_num-1]獲取元素。

                用格式化輸出的方法打印結果:

                1. print('第{}周的存款:{}元'.format(week_num, saved_money_list[week_num - 1]))

                把代碼補充完整,運行⊙看看效果:

                1. import math
                2. def save_money_in_n_weeks(money_per_week, increase_money, total_week):
                3. money_list = [] # 記錄每周存款數的列表
                4. saved_money_list =[] #記錄每周賬戶累計
                5. for i in range(total_week):
                6. money_list.append(money_per_week)
                7. saving = math.fsum(money_list)
                8. saved_money_list.append(saving)
                9. # 輸出信息
                10. #print('第{}周,存入{}元,賬戶累計{}元'.format(i + 1, money_per_week, saving))
                11. # 更新下一周的存錢金額
                12. money_per_week += increase_money
                13. return saved_money_list
                14. money_per_week = float(input('請輸入每周的存入的金額:')) # 每周的存入的金額
                15. increase_money = float(input('請輸入每周的遞增◣金額:')) # 遞增的金額
                16. total_week = int(input('請輸入總共的周數:')) # 總共的周數
                17. # 調用函數
                18. saved_money_list = save_money_in_n_weeks(money_per_week, increase_money, total_week)
                19. week_num = int(input('請問您想查看第幾周的賬戶累計金額?'))
                20. print('第{}周的存款:{}元'.format(week_num, saved_money_list[week_num - 1]))

                恭喜大家取得了階段性勝利,撒花慶祝~(雖然下面還有更嚴峻的考驗在等著我們)

                如何根據用戶輸入的日期,判斷這個日期是一年中的】第幾周?

                要像課程開始說的,先根據年份「判斷平年閏年,再把不同月份的天數加在一起,最後計算※出周數…這麽復雜的一系列操作又要多出幾十行代碼。

                現在就不得不提到Python神通廣大↓的模塊了。我們不止一次講過Python的優點之一在於它有豐富的模塊,可以幫助我們解☆決各種各樣的問題。

                處理時◣間的標準函數庫datetime就是我們今天要認識的新朋友。

                datetime.now()方法可以獲〗取當前日期和時間,使用之前還是別忘記要用一行import導入模塊:

                1. import datetime
                2. datetime.datetime.now()

                就是這麽』簡單方便~程序為我們獲取了當下的時間。使用type()來查看一下數據的類型:

                代碼練習:

                編程區

                1. print(type(datetime.datetime.now()))

                終端區

                用戶輸入要用到input()函數,輸入的數據是字符串類型,需要把字符串類型的數據轉換為datetime標準格式,方便⌒ 後續獲取周數信息。

                解析時間類型的字符串,可以使用datetime.strptime()方法。

                但是時間輸入有很ω 多格式,例如常見的有:2021/02/03或者2021-02-03。

                我們可以在datetime.strptime()的參數中告訴程序,應該按照哪種格式來解析字符串。

                datetime.strtime()有兩個參◆數,第一個參數是待解析字符串,第二個參數◎是字符串格式。來看個簡單的例子:

                1. input_date_str = input('請輸♂入日期(yyyy/mm/dd):')
                2. input_date = datetime.datetime.strptime(input_date_str, '%Y/%m/%d')

                年月日之間用/分隔,大寫Y代表︾年份用4位↓數字表示,如果寫為%y/%m/%d,則年份用兩位數字表示。

                1. input_date_str = input('請輸這一次入日期(yy/mm/dd):')
                2. input_date = datetime.datetime.strptime(input_date_str, '%y/%m/%d')

                請你思考,如果用戶輸入2021-02-03的日」期格式,應該怎麽書寫呢?

                1. input_date_str = input('請輸入日期(yy-mm-dd):')
                2. input_date = datetime.datetime.strptime(input_date_str, '%y-%m-%d')

                相信你◤一定答對了~下面我們就能用標準格式的時間來獲取周數。

                用到的是isocalander()方法:

                代碼練習:

                編程區

                1. import datetime
                2. date_str = '2021/02/03'
                3. input_date = datetime.datetime.strptime(date_str, '%Y/%m/%d')
                4. # 打印結果
                5. print(input_date.isocalendar())

                終端區

                isocalendar()方法,返回了三個值,分別代表年一定要保重啊 份、周數、星期幾。但在案例中我們只需要其中的周數信息,如何把它提取出來呢█?

                周數在返回值的第二個位置上,索引值從0開始,索引值1就能獲取第二個位置上的內容:

                1. import datetime
                2. date_str = '2021/02/03'
                3. input_date = datetime.datetime.strptime(date_str, '%Y/%m/%d')
                4. week_num = input_date.isocalendar()[1]

                把代碼補充進程序中~運行查看結果@:

                1. import math
                2. import datetime
                3. def save_money_in_n_weeks(money_per_week, increase_money, total_week):
                4. """
                5. 計算n周內的存款金額
                6. """
                7. money_list = [] # 記錄每周存款數的列表
                8. saved_money_list = [] # 記錄每周賬戶累計
                9. for i in range(total_week):
                10. money_list.append(money_per_week)
                11. saving = math.fsum(money_list)
                12. saved_money_list.append(saving)
                13. # 輸出信息
                14. # print('第{}周,存入{}元,賬戶累計{}元'.format(i + 1, money_per_week, saving))
                15. # 更新下一周的存錢金額
                16. money_per_week += increase_money
                17. return saved_money_list
                18. money_per_week = float(input('請輸入每周的存入的金額:')) # 每周的存入的金額
                19. increase_money = float(input('請輸入每周的遞增金額:')) # 遞增的金額
                20. total_week = int(input('請輸入總共的周數:')) # 總共的周數
                21. # 調用函數
                22. saved_money_list = save_money_in_n_weeks(money_per_week, increase_money, total_week)
                23. input_date_str = input('請輸入日期(yyyy/mm/dd):')
                24. input_date = datetime.datetime.strptime(input_date_str, '%Y/%m/%d')
                25. week_num = input_date.isocalendar()[1]
                26. print('第{}周的存款:{}元'.format(week_num, saved_money_list[week_num - 1]))
                本關總結

                到這裏我們就完成了52周存一刀錢挑戰的全部課程~下面一起來回顧一下今天的重點吧。

                datetime:處理時間的標準函數庫

                datetime.now()獲取當前日期和時間

                字符串->datetime

                datetime.strptime() 解析時間字符串

                isocalendar()返回年,周數,星期幾

                下節預告

                恭喜你完成了52周存錢挑戰的案例學習~通過這個例子我們學會了很多Python語法知識,我為你做了一個小結原本沒有飛升神界:

                從下節課開始我們將進入更加有趣的全¤新案例!

                除了列表外,Python中還有哪些操作可以處理組合數據?

                它們之間的區別與聯系是什麽?

                下節課為你揭曉~

                想獲取課程資√料,與更多同學一起交流學習,歡迎掃描二維碼添加班主任老師微信,我們下節課再見♀!

                掃描二維碼添加班主任

                已經添加班主任的同必要學無需重復掃碼,直接聯系對應老師就可以哦。

                52周存錢挑戰 1/3

                52周存錢挑戰(5)

                1.0x

                恭喜完成▲本課時的學習!
                堅持學習

                行動力超過

                累計學習

                學習下一課時