文科生學(xué)Python系列6: 循環(huán)/自定義函數(shù)

循環(huán):

while循環(huán):

在循環(huán)開始之前對(duì)變量進(jìn)行初始化

在循環(huán)體中重復(fù)執(zhí)行相應(yīng)的操作典阵,并更新變量的值

循環(huán)結(jié)束時(shí)查看最終變量

打印一組數(shù)

將num賦值為1, 初始值為1,后面開始程序進(jìn)行運(yùn)算。直到輸出的值大于10,程序結(jié)束焚鲜。

來個(gè)難一點(diǎn)的例子

最大公約數(shù)的查找

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:

作業(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ò)。如下圖:

沒有反應(yīng)的運(yùn)行

截圖給程序員小哥哥看笨篷,他說了一句:

“你輸入 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 罩扇,然后就行了:

求48和78的

開始想的是最大公約數(shù)是從1開始遞增到 n1 和 n2的值就結(jié)束婆芦,那么最小公倍數(shù)應(yīng)該是從一個(gè)大數(shù)開始遞減怕磨,到n1 和 n2的值結(jié)束。

錯(cuò)誤示范

找公倍數(shù)的錯(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è)失敗的案例吧袋毙!

錯(cuò)誤示范
正確示范

目瞪口呆。命浴。娄猫。我覺得這個(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ù)計(jì)算最大公約數(shù)


函數(shù)可以沒有指定參數(shù)殖氏,也可以沒有返回值:

沒有指定參數(shù)和返回值的函數(shù)


函數(shù)內(nèi)部也可以調(diào)用函數(shù):

調(diào)用內(nèi)部函數(shù)的函數(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ì)算器啦!

工資計(jì)算器的自定義函數(shù)

這里要千萬(wàn)記得铐望,每次打中文和英文的切換冈涧,給你們看一個(gè)錯(cuò)誤示范

工資計(jì)算器的錯(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ì)算表瞬捕,那得多牛逼啊舵抹!心里在笑肪虎,很大聲,不知道為什么能那么開心??????

“怎么會(huì)是這個(gè)結(jié)果惧蛹?扇救!”

然而這輸出讓我驚呆了,老師的最后一個(gè)數(shù) 明明5500的跋闵ぁ迅腔!為啥我的是1800 ??坑椤2琢摇!這些人的錢呢像云?哪去了锌雀?

回看老師和我的代碼有什么不一樣蚂夕,原來我最后一行沒有加上去,就是沒有合計(jì)這一項(xiàng)腋逆,這時(shí)不禁心虛婿牍。。惩歉。剛剛的豪情萬(wàn)丈暗戎!現(xiàn)在在谷底柬泽。慎菲。嫁蛇。

左邊是老師的運(yùn)行锨并,右邊是我的

然后加入最后一句,運(yùn)行結(jié)果是這樣的:

計(jì)算工資結(jié)果

其實(shí)它是需要一步一步輸入姓名/工作小時(shí)數(shù)/單位時(shí)間工資的睬棚,第一步是下圖:

輸入名字



來吧第煮,讓我們?cè)诩t色警報(bào)的嘲笑中繼續(xù)堅(jiān)韌生存吧~~??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市抑党,隨后出現(xiàn)的幾起案子包警,更是在濱河造成了極大的恐慌,老刑警劉巖底靠,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件害晦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡暑中,警方通過查閱死者的電腦和手機(jī)壹瘟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鳄逾,“玉大人稻轨,你說我怎么就攤上這事〉癜迹” “怎么了殴俱?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)枚抵。 經(jīng)常有香客問我线欲,道長(zhǎng),這世上最難降的妖魔是什么汽摹? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任李丰,我火速辦了婚禮,結(jié)果婚禮上竖慧,老公的妹妹穿的比我還像新娘嫌套。我一直安慰自己逆屡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布踱讨。 她就那樣靜靜地躺著魏蔗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪痹筛。 梳的紋絲不亂的頭發(fā)上莺治,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音帚稠,去河邊找鬼谣旁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛滋早,可吹牛的內(nèi)容都是我干的榄审。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼杆麸,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼搁进!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起昔头,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤饼问,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后揭斧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體莱革,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年讹开,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盅视。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡萧吠,死狀恐怖左冬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纸型,我是刑警寧澤拇砰,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站狰腌,受9級(jí)特大地震影響除破,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜琼腔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一瑰枫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦光坝、人聲如沸尸诽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)性含。三九已至,卻和暖如春鸳惯,著一層夾襖步出監(jiān)牢的瞬間商蕴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工芝发, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绪商,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓辅鲸,卻偏偏與公主長(zhǎng)得像格郁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瓢湃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容