循環(huán):
while循環(huán):
在循環(huán)開始之前對(duì)變量進(jìn)行初始化
在循環(huán)體中重復(fù)執(zhí)行相應(yīng)的操作典阵,并更新變量的值
循環(huán)結(jié)束時(shí)查看最終變量
將num賦值為1, 初始值為1,后面開始程序進(jìn)行運(yùn)算。直到輸出的值大于10,程序結(jié)束焚鲜。
來個(gè)難一點(diǎn)的例子
gcd是最大公約數(shù),1很明顯,是兩個(gè)值的最小公約數(shù)忿磅,所以從1開始循環(huán)糯彬。k賦值2,開始循環(huán)葱她。當(dāng)從2開始情连,小于等于這兩個(gè)整數(shù)的時(shí)候,k才有機(jī)會(huì)進(jìn)行下一步的if語(yǔ)句览效,用這兩個(gè)整數(shù)除以k却舀,余數(shù)等于0的時(shí)候,就是公約數(shù)锤灿,但是此時(shí)是需要同時(shí)滿足兩個(gè)整數(shù)整除的挽拔,所以此處用 and 語(yǔ)句,要是符合以上條件但校,之前符合的值就要被替換掉螃诅,因?yàn)槲覀冃枰氖亲畲蟮模酝现饾u遞增状囱。滿足以上條件之后术裸,k繼續(xù)加1,增大值來試試后面的條件符不符合亭枷。直到k大于n1或者大于n2袭艺。循環(huán)結(jié)束。
作業(yè)3-2:
這個(gè)作業(yè)讓我想了好久好久啊叨粘。我有點(diǎn)忘了什么是公倍數(shù)猾编,上網(wǎng)查了一下例題,感受了一下升敲。然而那只是一個(gè)感覺而已答倡,記得小學(xué)課本是有三個(gè)條件的,但是具體是什么驴党,只記得是賦值k瘪撇,然后k>0,且k能被整除沒有余數(shù)港庄。還是沒有具體步驟倔既,去作業(yè)去偷看了一下同學(xué)們的作業(yè)。跟著敲下來攘轩,神奇的是叉存,我完全復(fù)制后,整個(gè)頁(yè)面一動(dòng)也不動(dòng)度帮,沒有輸出也沒有紅色警報(bào),我不知道哪里出了錯(cuò)。如下圖:
截圖給程序員小哥哥看笨篷,他說了一句:
“你輸入 hello world 試試看瞳秽,看到底是環(huán)境問題還是代碼問題÷食幔”
這個(gè)思路练俐!我要拿個(gè)小本記下來!
注意到的是冕臭,這個(gè)時(shí)候我輸入的所有代碼的前綴“In”后面的方括號(hào)都是*這樣的星號(hào)腺晾,而不是數(shù)字了。這可能是證明這個(gè)程序已經(jīng)不能按著前面的順序繼續(xù)下去辜贵?
這個(gè)是昨晚發(fā)生的事情悯蝉,解決不了,我就睡覺了托慨。
今天一大早又開始鼻由,重新打開Anaconda,還是不能運(yùn)行厚棵。截圖給給我們課程“解密大數(shù)據(jù)”的團(tuán)隊(duì)QQ群里面蕉世,沒等團(tuán)隊(duì)的小伙伴解答,我突然好像明白了婆硬,我賦值的是k狠轻,而前面公約數(shù)的時(shí)候k就已經(jīng)被賦值過了,之前一家人的身高在前面賦值后彬犯,后面要在全家人身高里面找爸爸的身高時(shí)哈误,并不用全部把數(shù)值重新輸一遍,都可以在底部進(jìn)行數(shù)據(jù)的共享躏嚎,所以蜜自,在同一個(gè)文件夾的賦值,是共用的卢佣!
也就是前面已經(jīng)有k 的出現(xiàn)重荠,到了后面再賦值k的時(shí)候,程序無(wú)法辨識(shí)這個(gè)k到底是上面的虚茶,還是這條語(yǔ)句的戈鲁,結(jié)果就是沒有輸出。
這里我的問題是嘹叫,難道這不算是一種錯(cuò)誤類型嗎婆殿?為什么沒有紅色警報(bào)?
我的解決辦法就是把k變成i 罩扇,然后就行了:
開始想的是最大公約數(shù)是從1開始遞增到 n1 和 n2的值就結(jié)束婆芦,那么最小公倍數(shù)應(yīng)該是從一個(gè)大數(shù)開始遞減怕磨,到n1 和 n2的值結(jié)束。
錯(cuò)誤示范:
錯(cuò)誤示范中都是賦值太多消约,總想創(chuàng)造新的賦值讓自己更清晰肠鲫,但是賦值后才明白根本沒有想明白里面最簡(jiǎn)單的邏輯,到了后面反而是太多賦值不知所措了或粮。我們知道公約數(shù)和公倍數(shù)大于零导饲,賦值的初始值可以設(shè)為1,從1開始遞增氯材。(這里就不明白為什么求公約數(shù)的時(shí)候渣锦,k的初始值是2了。)
循環(huán)控制:break和 continue
使用break終止當(dāng)前循環(huán)
使用continue終止當(dāng)前迭代氢哮,繼續(xù)下一次循環(huán)迭代
讓我們先來個(gè)失敗的案例吧袋毙!
目瞪口呆。命浴。娄猫。我覺得這個(gè)可以拿去玩“大家來找茬”,除了文字性描述沒有加上之外生闲,還有就是空格鍵少打了媳溺,竟然第二次能夠得出正確結(jié)果?到底是什么問題碍讯?
嵌套循環(huán)(Nested Loops)
一個(gè)循環(huán)體中悬蔽,包含了另一個(gè)循環(huán)
第一個(gè)循環(huán)稱為外部循環(huán),第二個(gè)循環(huán)稱為內(nèi)部循環(huán)
外部循環(huán)每迭代一次捉兴,內(nèi)部循環(huán)都會(huì)執(zhí)行它全部的迭代蝎困。
用嵌套循環(huán)打印一個(gè)九九乘法表:
為了輸出整齊好看,使用format函數(shù)倍啥,表示這樣的結(jié)果需要占4個(gè)位置(‘4d')禾乘。因?yàn)槟J(rèn)的print語(yǔ)句是會(huì)直接換行的,所以這里用 ?end=‘ ’ ?表示打印結(jié)果后不需要進(jìn)行換行虽缕∈寂海‘\n’ 表示一個(gè)換行符。
在 i 的循環(huán)之中氮趋,和 j 的值先從1到9開始相乘伍派,然后打印第一行的數(shù)值,直到 j 大于9剩胁,就換行诉植,然后開始 i=2 和 j 值的相乘。循環(huán)往復(fù)昵观。直到 i 的值大于9晾腔。
自定義函數(shù)
自定義函數(shù)舌稀,需要定義函數(shù)名和相應(yīng)的執(zhí)行語(yǔ)句塊,然后就可以在程序中反復(fù)調(diào)用該函數(shù)建车。
使用def開頭扩借,后接函數(shù)名和參數(shù)椒惨,并用冒號(hào)結(jié)束該行缤至;之后是代表函數(shù)體的代碼組,需要縮進(jìn)康谆。
參數(shù)由一對(duì)小括號(hào)包圍领斥,其個(gè)數(shù)可以是0個(gè),1個(gè)或多個(gè)沃暗,如果函數(shù)名后接空括號(hào)表明這個(gè)函數(shù)沒有指定參數(shù)月洛。
調(diào)用函數(shù)時(shí),使用函數(shù)名加上一對(duì)小括號(hào)孽锥,括號(hào)內(nèi)是函數(shù)的參數(shù)嚼黔。
老師說,自定義函數(shù)好處多多惜辑,具體是什么唬涧,應(yīng)該后面會(huì)講到的。
為什么我這里不講呢盛撑?因?yàn)槲叶紱]聽明白??
不過跟著打下面這個(gè)例子之后碎节,我好像明白了一點(diǎn)點(diǎn),相同的算法要是有很大批量的話抵卫,這個(gè)自定義函數(shù)就簡(jiǎn)單多了狮荔,前面辛苦點(diǎn)打出一個(gè)基礎(chǔ)款,后面直接代入具體數(shù)值就可以了 介粘。
函數(shù)可以沒有指定參數(shù)殖氏,也可以沒有返回值:
函數(shù)內(nèi)部也可以調(diào)用函數(shù):
案例:自定義一個(gè)每周工資計(jì)算器函數(shù)
輸入你的姓名,工作時(shí)間姻采,和單位工資
如果一周工作時(shí)間大于40小時(shí)雅采,加班時(shí)間按照常規(guī)工資1.5倍計(jì)算
先熟悉一個(gè)語(yǔ)法,下面是第一步和第二部:
然后我們自定義一個(gè)函數(shù)偎谁,這個(gè)函數(shù)叫salary_calculator总滩,工資計(jì)算器。把里面的計(jì)算程序和賦值都定義好巡雨,然后就有一個(gè)很好用的輸入名字和加班時(shí)間闰渔,就能輸出一個(gè)月工資有多少的工資計(jì)算器啦!
這里要千萬(wàn)記得铐望,每次打中文和英文的切換冈涧,給你們看一個(gè)錯(cuò)誤示范
這個(gè)輸出讓我一臉懵逼惹盼,我明明是按照老師的代碼,一字不差地打的捌核昔案!為啥又會(huì)出現(xiàn)紅色警報(bào)?用我視力5.3點(diǎn)視力來回掃愚隧,我都沒有看出哪里和老師的不同蒂阱,于是截圖到我們課堂學(xué)習(xí)的QQ群,有小伙伴說狂塘,標(biāo)點(diǎn)符號(hào)打的時(shí)候可能沒有切換回英文吧录煤。恍然大悟荞胡!
重新試了一下妈踊,果然是!所以各位一定要記得:
切換中英文環(huán)境很重要@崞@扔!
切換中英文環(huán)境很重要B芮凇B锻病!
切換中英文環(huán)境很重要W萘酢Q浴!
緊張的最后一步來了假哎,我想著要是我自己能學(xué)會(huì)打出一個(gè)我們公司的工資計(jì)算表瞬捕,那得多牛逼啊舵抹!心里在笑肪虎,很大聲,不知道為什么能那么開心??????
然而這輸出讓我驚呆了,老師的最后一個(gè)數(shù) 明明5500的跋闵ぁ迅腔!為啥我的是1800 ??坑椤2琢摇!這些人的錢呢像云?哪去了锌雀?
回看老師和我的代碼有什么不一樣蚂夕,原來我最后一行沒有加上去,就是沒有合計(jì)這一項(xiàng)腋逆,這時(shí)不禁心虛婿牍。。惩歉。剛剛的豪情萬(wàn)丈暗戎!現(xiàn)在在谷底柬泽。慎菲。嫁蛇。
然后加入最后一句,運(yùn)行結(jié)果是這樣的:
其實(shí)它是需要一步一步輸入姓名/工作小時(shí)數(shù)/單位時(shí)間工資的睬棚,第一步是下圖:
來吧第煮,讓我們?cè)诩t色警報(bào)的嘲笑中繼續(xù)堅(jiān)韌生存吧~~??