文科生學Python系列6: 循環/自定義函數

循環:

while循環:

在循環開始之前對變量進行初始化

在循環體中重復執行相應的操作,并更新變量的值

循環結束時查看最終變量

打印一組數

將num賦值為1, 初始值為1,后面開始程序進行運算。直到輸出的值大于10,程序結束。

來個難一點的例子

最大公約數的查找

gcd是最大公約數,1很明顯,是兩個值的最小公約數,所以從1開始循環。k賦值2,開始循環。當從2開始,小于等于這兩個整數的時候,k才有機會進行下一步的if語句,用這兩個整數除以k,余數等于0的時候,就是公約數,但是此時是需要同時滿足兩個整數整除的,所以此處用 and 語句,要是符合以上條件,之前符合的值就要被替換掉,因為我們需要的是最大的,所以往上逐漸遞增。滿足以上條件之后,k繼續加1,增大值來試試后面的條件符不符合。直到k大于n1或者大于n2。循環結束。

作業3-2:

作業3-2

這個作業讓我想了好久好久啊。我有點忘了什么是公倍數,上網查了一下例題,感受了一下。然而那只是一個感覺而已,記得小學課本是有三個條件的,但是具體是什么,只記得是賦值k,然后k>0,且k能被整除沒有余數。還是沒有具體步驟,去作業去偷看了一下同學們的作業。跟著敲下來,神奇的是,我完全復制后,整個頁面一動也不動,沒有輸出也沒有紅色警報,我不知道哪里出了錯。如下圖:

沒有反應的運行

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

“你輸入 hello world 試試看,看到底是環境問題還是代碼問題。”

這個思路!我要拿個小本記下來!

注意到的是,這個時候我輸入的所有代碼的前綴“In”后面的方括號都是*這樣的星號,而不是數字了。這可能是證明這個程序已經不能按著前面的順序繼續下去?

這個是昨晚發生的事情,解決不了,我就睡覺了。

今天一大早又開始,重新打開Anaconda,還是不能運行。截圖給給我們課程“解密大數據”的團隊QQ群里面,沒等團隊的小伙伴解答,我突然好像明白了,我賦值的是k,而前面公約數的時候k就已經被賦值過了,之前一家人的身高在前面賦值后,后面要在全家人身高里面找爸爸的身高時,并不用全部把數值重新輸一遍,都可以在底部進行數據的共享,所以,在同一個文件夾的賦值,是共用的!

也就是前面已經有k 的出現,到了后面再賦值k的時候,程序無法辨識這個k到底是上面的,還是這條語句的,結果就是沒有輸出。

這里我的問題是,難道這不算是一種錯誤類型嗎?為什么沒有紅色警報?

我的解決辦法就是把k變成i ,然后就行了:

求48和78的

開始想的是最大公約數是從1開始遞增到 n1 和 n2的值就結束,那么最小公倍數應該是從一個大數開始遞減,到n1 和 n2的值結束。

錯誤示范

找公倍數的錯誤示范

錯誤示范中都是賦值太多,總想創造新的賦值讓自己更清晰,但是賦值后才明白根本沒有想明白里面最簡單的邏輯,到了后面反而是太多賦值不知所措了。我們知道公約數和公倍數大于零,賦值的初始值可以設為1,從1開始遞增。(這里就不明白為什么求公約數的時候,k的初始值是2了。)

循環控制:break和 continue

使用break終止當前循環

使用continue終止當前迭代,繼續下一次循環迭代

讓我們先來個失敗的案例吧!

錯誤示范
正確示范

目瞪口呆。。。我覺得這個可以拿去玩“大家來找茬”,除了文字性描述沒有加上之外,還有就是空格鍵少打了,竟然第二次能夠得出正確結果?到底是什么問題?

嵌套循環(Nested Loops)

一個循環體中,包含了另一個循環

第一個循環稱為外部循環,第二個循環稱為內部循環

外部循環每迭代一次,內部循環都會執行它全部的迭代。

用嵌套循環打印一個九九乘法表:

九九乘法表

為了輸出整齊好看,使用format函數,表示這樣的結果需要占4個位置(‘4d')。因為默認的print語句是會直接換行的,所以這里用 ?end=‘ ’ ?表示打印結果后不需要進行換行。‘\n’ 表示一個換行符。

在 i 的循環之中,和 j 的值先從1到9開始相乘,然后打印第一行的數值,直到 j 大于9,就換行,然后開始 i=2 和 j 值的相乘。循環往復。直到 i 的值大于9。

自定義函數

自定義函數,需要定義函數名和相應的執行語句塊,然后就可以在程序中反復調用該函數。

使用def開頭,后接函數名和參數,并用冒號結束該行;之后是代表函數體的代碼組,需要縮進。

參數由一對小括號包圍,其個數可以是0個,1個或多個,如果函數名后接空括號表明這個函數沒有指定參數。

調用函數時,使用函數名加上一對小括號,括號內是函數的參數。

老師說,自定義函數好處多多,具體是什么,應該后面會講到的。

為什么我這里不講呢?因為我都沒聽明白??

不過跟著打下面這個例子之后,我好像明白了一點點,相同的算法要是有很大批量的話,這個自定義函數就簡單多了,前面辛苦點打出一個基礎款,后面直接代入具體數值就可以了 。

用自定義函數計算最大公約數


函數可以沒有指定參數,也可以沒有返回值:

沒有指定參數和返回值的函數


函數內部也可以調用函數:

調用內部函數的函數


案例:自定義一個每周工資計算器函數

輸入你的姓名,工作時間,和單位工資

如果一周工作時間大于40小時,加班時間按照常規工資1.5倍計算

先熟悉一個語法,下面是第一步和第二部:

顯示的第一步
第二步

然后我們自定義一個函數,這個函數叫salary_calculator,工資計算器。把里面的計算程序和賦值都定義好,然后就有一個很好用的輸入名字和加班時間,就能輸出一個月工資有多少的工資計算器啦!

工資計算器的自定義函數

這里要千萬記得,每次打中文和英文的切換,給你們看一個錯誤示范

工資計算器的錯誤示范

這個輸出讓我一臉懵逼,我明明是按照老師的代碼,一字不差地打的啊!為啥又會出現紅色警報?用我視力5.3點視力來回掃,我都沒有看出哪里和老師的不同,于是截圖到我們課堂學習的QQ群,有小伙伴說,標點符號打的時候可能沒有切換回英文吧。恍然大悟!

重新試了一下,果然是!所以各位一定要記得:

切換中英文環境很重要!!!

切換中英文環境很重要!!!

切換中英文環境很重要!!!

緊張的最后一步來了,我想著要是我自己能學會打出一個我們公司的工資計算表,那得多牛逼啊!心里在笑,很大聲,不知道為什么能那么開心??????

“怎么會是這個結果?!”

然而這輸出讓我驚呆了,老師的最后一個數 明明5500的啊!為啥我的是1800 ?!!!這些人的錢呢?哪去了?

回看老師和我的代碼有什么不一樣,原來我最后一行沒有加上去,就是沒有合計這一項,這時不禁心虛。。。剛剛的豪情萬丈啊!現在在谷底。。。

左邊是老師的運行,右邊是我的

然后加入最后一句,運行結果是這樣的:

計算工資結果

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

輸入名字



來吧,讓我們在紅色警報的嘲笑中繼續堅韌生存吧~~??

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,401評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,011評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,263評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,543評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,323評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,874評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,968評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,095評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,605評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,551評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,720評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,242評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,961評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,358評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,612評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,330評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,690評論 2 370

推薦閱讀更多精彩內容