0010 人生就像死循環(huán),只要不退出就要繼續(xù)運行

這節(jié)課講循環(huán)可免。

程序執(zhí)行順序有3種抓于,第一種最簡單:按順序執(zhí)行;第二種是前面幾節(jié)課講的:分支執(zhí)行浇借,即根據(jù)情況執(zhí)行分支的某一個捉撮,其余的不執(zhí)行;第三種就是今天要講的:循環(huán)執(zhí)行妇垢。

這3種執(zhí)行邏輯是所有計算機語言都通用的執(zhí)行順序邏輯巾遭。所有復雜得程序邏輯都是由這3種程序邏輯組成。

什么是循環(huán)

循環(huán)的意思就是當滿足某種條件時反復執(zhí)行相同的一段邏輯闯估,直到條件不滿足或者強制退出循環(huán)灼舍。

參照上面的那個邏輯順序圖,當滿足循環(huán)條件時睬愤,執(zhí)行循環(huán)操作片仿,操作結(jié)束后再回到循環(huán)判斷的地方,再次判斷是否滿足循環(huán)條件尤辱,

如果滿足則再次執(zhí)行循環(huán)操作,假如不滿足循環(huán)條件厢岂,則循環(huán)結(jié)束光督。

假如循環(huán)條件一直滿足,則循環(huán)會一直進行下去塔粒,這就是“死循環(huán)”结借,寫程序要避免這種情況。否則電腦就會持續(xù)執(zhí)行程序卒茬,這不是我們希望的情況船老。

while循環(huán)語法

在python程序里面,可以用while來實現(xiàn)循環(huán)圃酵,語法規(guī)則如下:

while 條件表達式為True:

? ? 循環(huán)操作1

? ? 循環(huán)操作2

后續(xù)操作

例子:

name=input()

while name<>"michael":

? ? name=input()

print name

這段代碼的意思:當輸入名字不是michael柳畔,則繼續(xù)輸入,直到輸入了michael則停止郭赐,最后輸出

從1加到100求和

從1加到100薪韩,大家都知道結(jié)果是5050,那么如果用python代碼來計算,就需要用循環(huán)了

#coding=utf-8

#從1加到100求和

#作者:學哥? 時間:2017/1/1

#變量c作為計數(shù)器

c=1

#變量total保存累加值

total=0

#循環(huán)100次俘陷,如果計數(shù)器大于100則退出循環(huán)

while c<=100:

? ? #計數(shù)器同時作為累加增加的值

? ? total = total + c

? ? #將計數(shù)器加1

? ? c = c + 1

print "total 1-100:",total


我們模擬一下電腦執(zhí)行的過程如下:

c=1

total=0

循環(huán)判斷c=1是小于等于100條件滿足

total=0+1=1

c=1+1=2

再次循環(huán)判斷c=2是小于等于100條件滿足

total=1+2=3

c=2+1=3

再次循環(huán)判斷c=3是小于等于100條件滿足

total=3+3=6

c=3+1=4

再次循環(huán)判斷c=4是小于等于100條件滿足

total=6+4=10

c=4+1=5

再次循環(huán)判斷c=5是小于等于100條件滿足

total=10+5=15

c=5+1=6

......

再次循環(huán)判斷c=99是小于等于100條件滿足

total=4851+99=4950

c=99+1=100

再次循環(huán)判斷c=100是小于等于100條件滿足

total=4950+100=5050

c=100+1=101

再次循環(huán)判斷c=101是小于等于100條件不滿足

循環(huán)結(jié)束

人腦來計算實在太麻煩了罗捎,還是電腦計算厲害,我們要利用循環(huán)的力量

來看看最終的結(jié)果吧

可以看到結(jié)果是5050

注意前面有一個錯誤拉盾,說文件不存在桨菜,這是因為我在保存的時候忘記輸入.py了,保存成add100文件名了捉偏,所以報錯

碰到這種錯誤雷激,重新保存一下文件為add100.py然后重新運行

從1開始連續(xù)100個奇數(shù)相加是多少

從1開始,累加奇數(shù)告私,也就是1屎暇,3,5驻粟,......根悼,直到加了100個奇數(shù)

需要將剛才的程序進行修改一下,關(guān)鍵是要累加的數(shù)不是連續(xù)的蜀撑,那么計數(shù)器就不能作為累加的數(shù)挤巡,因此需要再增加一個變量用來存儲奇數(shù)

#coding=utf-8

#從1開始連續(xù)100個奇數(shù)相加求和

#作者:學哥? 時間:2017/1/1

#變量c作為計數(shù)器

c=1

#變量jishu保存奇數(shù)

jishu=1

#變量total保存累加值

total=0

#循環(huán)100次,如果計數(shù)器大于100則退出循環(huán)

while c<=100:

? ? #奇數(shù)作為累加增加的值

? ? total = total + jishu

? ? #奇數(shù)增加2酷麦,變成下一個奇數(shù)

? ? jishu = jishu + 2

? ? #將計數(shù)器加1

? ? c = c + 1

print "total 100 jishu:",total


看看結(jié)果是否正確矿卑,正確結(jié)果應該是10000

從2開始連續(xù)50個偶數(shù)相加是多少

這個和前面奇數(shù)相加的非常類似,請大家先不要往下看沃饶,自己先嘗試修改程序試試看






代碼如下:

結(jié)果如下:

從1月1日到12月31日的每一天分別是什么星座輸出

前面做過星座判斷程序母廷,輸入月份和日期,輸出星座糊肤,現(xiàn)在把程序修改成不需要輸入琴昆,而是循環(huán)輸出從1月1日到12月31日每一天都分別是什么星座,這樣馆揉,要在原來程序的基礎上修改业舍,增加循環(huán):

在開始修改之前,新學習一個知識:如何從循環(huán)中強制退出

while 條件表達式為True:

? ? 循環(huán)操作1

? ? break

? ? 循環(huán)操作2

后續(xù)操作

在循環(huán)內(nèi)部升酣,用break退出循環(huán)舷暮,程序執(zhí)行到break這一行,程序就直接退出while循環(huán)噩茄,break這行后面的代碼將不再執(zhí)行

上面的“循環(huán)操作2”這行代碼永遠也不會觸發(fā)執(zhí)行下面,也就是上面這個循環(huán)其實只循環(huán)一次還未結(jié)束就退出了

因此,一般我們會在break之前做一個條件判斷巢墅,滿足某種條件才會退出循環(huán)诸狭,如下:

while 條件表達式為True:

? ? 循環(huán)操作1

? ? if 條件表達式2為True:

? ? ? ? break

? ? 循環(huán)操作2

后續(xù)操作

這樣券膀,當條件表達式2為True的時候,才會退出循環(huán)驯遇,否則串纺,繼續(xù)進行循環(huán)

現(xiàn)在開始修改原來的星座判斷程序旷祸,先將程序另存為xingzuoall.py

然后將前面的輸入語句否彩,以及判斷輸入語句都注釋掉

然后瑞凑,增加初始化變量month和day從1月1日開始

month = 1

day = 1

然后增加while 循環(huán),并且條件永遠為True陡叠,在循環(huán)里面準備用break退出

循環(huán)內(nèi)部玩郊,先利用原來的星座判斷邏輯,得到星座并輸出枉阵,注意要將所有代碼增加縮進空格

然后將day加1译红,再次進入循環(huán),當day到達31的時候兴溜,將month加1侦厚,進入下一個月,并且將day=1拙徽,繼續(xù)下個月處理

當month到達13的時候刨沦,就可以用break退出循環(huán)了

關(guān)鍵代碼如下:



寫完程序之后,按照程序執(zhí)行的邏輯順序在腦子里跑一遍膘怕,如果記不住變量當前存儲的值想诅,可以用紙和筆進行記錄

總之要模擬執(zhí)行一遍,確保程序是按照預想的邏輯運行岛心,得到預期的結(jié)果

多檢查幾遍来破,就是磨刀不誤砍柴工,然后再去執(zhí)行程序

運行程序鹉梨,結(jié)果如下:



結(jié)果輸出從1月1日到12月31日每一天的星座

但是有不完美的地方讳癌,就是大小月沒有處理,因此存在一些不可能的日期

再次修改存皂,判斷日期>31的地方,將31替換為一個變量maxday

maxday初始值給31逢艘,然后根據(jù)當前month修改maxday為28或者30

修改代碼如下:

再次運行代碼旦袋,發(fā)現(xiàn)每個月的處理都正確了,核對星座的日期范圍也正確了它改。

通過這節(jié)課的講解和練習疤孕,學會了循環(huán),以后會經(jīng)常用到的

大家要反復練習央拖,要正確做到掌握代碼之后祭阀,能夠自己從零開始將整個代碼重寫出來

只有做到滾瓜爛熟鹉戚,才能掌握其中的竅門,不要害怕錯誤专控,編程水平就是在反復的錯誤和修改當中不斷提高的抹凳。


課后作業(yè):

輸出斐波拉契數(shù)列,打印100個數(shù)字 .

提示:斐波拉契數(shù)列就是 1伦腐,1赢底,2,3柏蘑,5幸冻,8,13咳焚,21洽损,34,55革半,89......? 這個數(shù)列從第3項開始碑定,每一項都等于前兩項之和


往期教程

0001 零基礎的小白能學會編程嗎?

0002 真的嗎督惰,700元的電腦可以學會編程不傅?

0003 十分鐘組裝一臺電腦開始編程

0004 如何編寫人生的第一行代碼helloworld

0005 鍵盤打字如何練成像黑客一樣的飛速

0006 編程入門python語言之加法計算器

0007 編程入門python語言之四則運算器

第一部分前7課小結(jié)和課程規(guī)劃說明及微信群主招募

0008 加減乘除也會算錯?還要編寫程序測試赏胚?

0009 如何編寫程序計算所屬星座访娶,一看就懂

因為教程是系列教程,前后關(guān)聯(lián)性非常強觉阅,請大家按照微信公眾號的發(fā)布時間先后次序進行閱讀崖疤。

微信公眾號里面直接輸入序號可以查看該序號課程,例如輸入0001可以查看【0001 零基礎的小白能學會編程嗎典勇?】

作者簡介

學哥劫哼,二十年編程經(jīng)驗,歷任程序員割笙,資深程序員权烧,技術(shù)經(jīng)理,項目經(jīng)理伤溉,產(chǎn)品經(jīng)理般码,系統(tǒng)架構(gòu)師,IT總監(jiān)乱顾。愛好篆刻板祝,閱讀,美食走净。

微信號簡介

每天半小時零基礎學編程券时。大人可以學孤里,小孩也可以學。練打字橘洞,用軟件捌袜,寫文檔,做網(wǎng)站震檩,做App琢蛤,編游戲,數(shù)據(jù)庫抛虏,玩硬件博其,寫程序,3D打印迂猴,無人機慕淡,機器人。

html,css,javascript,python,php,java,swift,mysql,android,ios,raspberry pi,scratch. 微信公眾號搜索:零基礎學編程沸毁。

QQ群簡介

歡迎大家加入QQ群 603559164 零基礎學編程峰髓,交流學習,共同進步息尺。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末携兵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子搂誉,更是在濱河造成了極大的恐慌徐紧,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炭懊,死亡現(xiàn)場離奇詭異并级,居然都是意外死亡,警方通過查閱死者的電腦和手機侮腹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門嘲碧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人父阻,你說我怎么就攤上這事愈涩。” “怎么了加矛?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵钠署,是天一觀的道長。 經(jīng)常有香客問我荒椭,道長,這世上最難降的妖魔是什么舰蟆? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任趣惠,我火速辦了婚禮狸棍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘味悄。我一直安慰自己草戈,他們只是感情好,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布侍瑟。 她就那樣靜靜地躺著唐片,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涨颜。 梳的紋絲不亂的頭發(fā)上费韭,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音庭瑰,去河邊找鬼星持。 笑死,一個胖子當著我的面吹牛弹灭,可吹牛的內(nèi)容都是我干的督暂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼穷吮,長吁一口氣:“原來是場噩夢啊……” “哼逻翁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起捡鱼,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤八回,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后堰汉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辽社,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年翘鸭,在試婚紗的時候發(fā)現(xiàn)自己被綠了滴铅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡就乓,死狀恐怖汉匙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情生蚁,我是刑警寧澤噩翠,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站邦投,受9級特大地震影響伤锚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜志衣,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一屯援、第九天 我趴在偏房一處隱蔽的房頂上張望猛们。 院中可真熱鬧,春花似錦狞洋、人聲如沸弯淘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庐橙。三九已至,卻和暖如春借嗽,著一層夾襖步出監(jiān)牢的瞬間态鳖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工淹魄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留郁惜,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓甲锡,卻偏偏與公主長得像兆蕉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缤沦,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗虎韵。 張土汪:刷leetcod...
    土汪閱讀 12,743評論 0 33
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)缸废,斷路器包蓝,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關(guān)的語法企量,內(nèi)部類的語法测萎,繼承相關(guān)的語法,異常的語法届巩,線程的語...
    子非魚_t_閱讀 31,623評論 18 399
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程硅瞧,因...
    小菜c閱讀 6,401評論 0 17
  • 一寸光陰一寸金,寸金難買寸光陰恕汇。從小就被教育我們珍惜時間腕唧,千萬不要虛度光陰。 我坐在這里發(fā)呆瘾英,看著過路的行人枣接,或者...
    小妮崽閱讀 435評論 0 0