上節(jié)課作業(yè)
輸入一個(gè)年月日日期昨稼,輸出是星期幾
程序邏輯提示:
先確認(rèn)一個(gè)錨點(diǎn),也就是1900-1-1為星期一=0,然后計(jì)算輸入的年月日日期和1900-1-1相差多少天敞掘,根據(jù)相差天數(shù)對(duì)7求余越驻,然后根據(jù)偏移量即可算出
關(guān)鍵點(diǎn)在于計(jì)算相差多少天汁政,因?yàn)檩斎氲娜掌诤?900年是跨多年的,需要用循環(huán)累計(jì)計(jì)算當(dāng)中每一年的總天數(shù)缀旁,這個(gè)時(shí)候就需要判斷當(dāng)中每一年是否是閏年還是平年
編程設(shè)計(jì):
輸入年月日
判斷年份的范圍必須在1900到2100之間
判斷月份的范圍必須在1到12之間
根據(jù)年份和月份得出這個(gè)月的最大日期為maxday记劈,大月31/小月30/2月份要根據(jù)閏年與否可能是28或者29
判斷日期的范圍必須在1到maxday之間
如果檢查全部通過,則繼續(xù)處理
相差總天數(shù)=0
年份循環(huán):從1900到輸入的年份并巍,根據(jù)是否閏年目木,相差總天數(shù)累加365天或者366天
月份循環(huán):從1到輸入的月份,求的每個(gè)月的maxday懊渡,相差總天數(shù)累計(jì)31或30或28或29
計(jì)算輸入日期和1日之間相差多少天刽射,相差總天數(shù)累計(jì)該天數(shù)
得到了從1900年1月1日到輸入的年月日之間相差的總天數(shù)
然后根據(jù)公式計(jì)算 week= ( n + x ) % 7 + 1,偏移量為0
代碼如下:
這里注意循環(huán)的方式剃执,采用先循環(huán)年誓禁,再循環(huán)月的方式可以減少循環(huán)次數(shù),要注意<和<=的區(qū)別肾档。
當(dāng)然也可以采用逐日循環(huán)的方式摹恰,那樣循環(huán)次數(shù)就比較多,但是概念上更好理解
結(jié)果如下:
列表類型
列表是最常用的python數(shù)據(jù)類型怒见,格式是用一個(gè)方括號(hào)戒祠,內(nèi)部用逗號(hào)分隔數(shù)據(jù)值。
列表的數(shù)據(jù)值可以有不同的數(shù)據(jù)類型速种,比如字符串姜盈,數(shù)字,列表等等
例如:
list1 = ["a", "b", "c", "d", "e"]
list2 = [1, 1, 2, 3, 5, 8, 13]
list3 = ["a", "b", 3, 8]
list5 = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"]
訪問列表中的值
使用下標(biāo)索引來訪問列表中的值配阵,索引序號(hào)從0開始馏颂,用負(fù)數(shù)則表示從末尾向前倒序序號(hào)
也可以使用方括號(hào)的形式截取列表的一部分
打開"LX終端"示血,進(jìn)入python環(huán)境,輸入以下語(yǔ)句救拉,進(jìn)行體驗(yàn):
更新列表
可以對(duì)列表的數(shù)據(jù)項(xiàng)進(jìn)行修改难审,運(yùn)行以下例子進(jìn)行體會(huì):
追加列表元素
使用list.append()來向列表最后追加一個(gè)元素,運(yùn)行以下例子進(jìn)行體會(huì):
刪除列表元素
使用del語(yǔ)句來刪除列表中的元素亿絮,運(yùn)行以下例子進(jìn)行體會(huì):
如何遍歷列表
遍歷列表有2種辦法告喊,對(duì)應(yīng)的分別是while循環(huán)和for循環(huán)
用函數(shù)len(list)可以獲得列表的元素的總個(gè)數(shù),然后用用一個(gè)計(jì)數(shù)器進(jìn)行while循環(huán):
用for? item in list: 語(yǔ)法遍歷整個(gè) list
循環(huán)的次數(shù)就是list的元素總個(gè)數(shù)派昧,每次循環(huán)將list的元素按次序取出黔姜,賦值給item變量,循環(huán)內(nèi)部的item就是不一樣的值
這里蒂萎,我們開始學(xué)習(xí)一個(gè)新的語(yǔ)法秆吵,for循環(huán)
那么,while循環(huán)和for循環(huán)的區(qū)別在哪里
while循環(huán)根據(jù)條件判讀式?jīng)Q定是否繼續(xù)循環(huán)
for循環(huán)根據(jù)list元素個(gè)數(shù)總數(shù)遍歷list進(jìn)行循環(huán)
一般五慈,如果需要對(duì)list列表循環(huán)就用for纳寂,否則就用while
while和for循環(huán)都可以用break強(qiáng)制退出循環(huán)
改造輸入數(shù)字1-7判斷是星期幾,更簡(jiǎn)單實(shí)現(xiàn)
掌握了列表數(shù)據(jù)類型后泻拦,會(huì)發(fā)現(xiàn)很多程序更容易實(shí)現(xiàn)了
前面做過一個(gè)程序毙芜,輸入數(shù)字1-7判斷是星期幾,原來的代碼是這樣的:
num=int(input("week num"))
if num==1:
? ? print "Monday"
elif num==2:
? ? print "Tuesday"
elif num==3:
? ? print "Wednesday"
elif num==4:
? ? print "Thursday"
elif num==5:
? ? print "Friday"
elif num==6:
? ? print "Saturday"
elif num==7:
? ? print "Sunday"
else:
? ? print "error input"
現(xiàn)在只要定義一個(gè)列表争拐,然后直接用序號(hào)索引去訪問就實(shí)現(xiàn)了
注意因?yàn)榱斜硇蛱?hào)是從0開始腋粥,但是輸入是1-7,所以訪問列表的序號(hào)是num-1
完整程序:
結(jié)果如下:
改造星座判斷程序
參照上面程序的做法陆错,將星座判斷程序改造成使用列表來處理,程序會(huì)精簡(jiǎn)很多
打開之前的文件xingzuo.py金赦,另存為xingzuolist.py音瓷,代碼如下:
結(jié)果如下:
請(qǐng)大家認(rèn)真學(xué)習(xí)這個(gè)程序,和以前的寫法有不一樣的地方夹抗,邏輯更嚴(yán)密了
關(guān)鍵的語(yǔ)句绳慎,就在2個(gè)list的定義下面的判斷語(yǔ)句和賦值語(yǔ)句
尤其是注意為何xingzuo_list里面是13個(gè)元素,為什么不是12個(gè)元素呢漠烧,請(qǐng)大家思考理解
課后作業(yè)
1. 繼續(xù)改造上面的星座判斷程序杏愤,日期判斷也用list實(shí)現(xiàn),代碼更簡(jiǎn)潔
2. 輸入郵政編碼前2位數(shù)字判斷輸出是哪個(gè)省份
程序邏輯提示:
去網(wǎng)上搜索一個(gè)郵政列表已脓,里面是關(guān)于郵政編碼前2位各自對(duì)應(yīng)的省份名稱珊楼,然后參考上面的星座判斷程序編寫,注意用到list然后用for循環(huán)度液。
?
往期教程
0001 零基礎(chǔ)的小白能學(xué)會(huì)編程嗎厕宗?
0002 真的嗎画舌,700元的電腦可以學(xué)會(huì)編程?
0003 十分鐘組裝一臺(tái)電腦開始編程
0004 如何編寫人生的第一行代碼helloworld
0005 鍵盤打字如何練成像黑客一樣的飛速
0006 編程入門python語(yǔ)言之加法計(jì)算器
0007 編程入門python語(yǔ)言之四則運(yùn)算器
第一部分前7課小結(jié)和課程規(guī)劃說明及微信群主招募
0008 加減乘除也會(huì)算錯(cuò)已慢?還要編寫程序測(cè)試曲聂?
0009 如何編寫程序計(jì)算所屬星座,一看就懂
0010 人生就像死循環(huán)佑惠,只要不退出就要繼續(xù)運(yùn)行
0011 迷人的斐波拉契數(shù)列朋腋,數(shù)學(xué)到極致就是美,編程同樣如此
因?yàn)榻坛淌窍盗薪坛棠た昂箨P(guān)聯(lián)性非常強(qiáng)旭咽,請(qǐng)大家按照微信公眾號(hào)的發(fā)布時(shí)間先后次序進(jìn)行閱讀。
微信公眾號(hào)里面直接輸入序號(hào)可以查看該序號(hào)課程把将,例如輸入0001可以查看【0001 零基礎(chǔ)的小白能學(xué)會(huì)編程嗎轻专?】
作者簡(jiǎn)介
學(xué)哥,二十年編程經(jīng)驗(yàn)察蹲,歷任程序員请垛,資深程序員,技術(shù)經(jīng)理洽议,項(xiàng)目經(jīng)理宗收,產(chǎn)品經(jīng)理,系統(tǒng)架構(gòu)師亚兄,IT總監(jiān)混稽。愛好篆刻,閱讀审胚,美食匈勋。
微信號(hào)簡(jiǎn)介
每天半小時(shí)零基礎(chǔ)學(xué)編程。大人可以學(xué)膳叨,小孩也可以學(xué)洽洁。練打字,用軟件菲嘴,寫文檔饿自,做網(wǎng)站,做App龄坪,編游戲昭雌,數(shù)據(jù)庫(kù),玩硬件健田,寫程序烛卧,3D打印,無(wú)人機(jī)妓局,機(jī)器人唱星。
html,css,javascript,python,php,java,swift,mysql,android,ios,raspberry pi,scratch. 微信公眾號(hào)搜索:零基礎(chǔ)學(xué)編程雳旅。
QQ群簡(jiǎn)介
歡迎大家加入QQ群 603559164 零基礎(chǔ)學(xué)編程,交流學(xué)習(xí)间聊,共同進(jìn)步攒盈。