1、while循環(huán)語句
迭代(iteration)意味著反復執(zhí)行相同的代碼塊。實現(xiàn)迭代的編程結構稱為循環(huán)(loop)。
假設有一項任務,要在屏幕上輸出從1到100的數(shù)字。僅僅使用之前討論過的知識,可能會寫出如下代碼:
- print(1)
- print(2)
- print(3)
- # 此處省略print(4) ~ print(99)
- print(100)
這樣做非常麻煩,也不聰明。學會編程的好處之一就是可以方便地處理重復工作。Python中的循環(huán)可以分為while循環(huán)和for循環(huán)兩種。
與if語句類似,while語句同樣首先判斷布爾表達式,如果為真,那么繼續(xù)執(zhí)行循環(huán)體;如果為假,那么跳出循環(huán)體。while循環(huán)的語法格式如下:
while 表達式:
循環(huán)體
使用while循環(huán)來完成從1到100的輸出任務:
- >>> n = 1 # 因為從1開始打印,所以先將n賦值為1
- >>> while n <= 100: # 每次都判斷n的值是否小于等于100
- ... print(n) # 打印n的值
- ... n = n + 1 # 每次將n的值增加1,以便打印2、3、4……
- ...
- 1
- 2
- 3
- 4
- ……
- 98
- 99
- 100
while循環(huán)總是不斷地判斷條件是否滿足,直到條件不滿足才跳出循環(huán)。利用這個特性,可以編寫一個“猜數(shù)字”的游戲。先由一個人輸入一個數(shù)字(自然數(shù)),這個數(shù)作為謎底。再由另外一個人猜,如果猜的數(shù)字比謎底大,那么打印“猜大了”; 如果猜的數(shù)字比謎底小,那么打印“猜小了”;直到猜的數(shù)字與謎底相等為止,打印“恭喜,猜對了!”。代碼示例如下:
- answer = int(input('請輸入謎底數(shù)字:'))
- number = int(input('請輸入您要猜的數(shù)字:'))
- while number != answer: # 如果number不等于answer,即猜錯了,那么進入循環(huán)
- if number > answer: # 如果猜的數(shù)字大于謎底
- print('猜大了!')
- else: # 如果猜的數(shù)字小于謎底
- print('猜小了!')
- number = int(input('請繼續(xù)輸入您要猜的數(shù)字:'))
- print('恭喜,猜對了!') # 如果跳出循環(huán),那么說明猜對了
建議將這個程序使用腳本模式運行,輸入數(shù)據(jù),測試運行結果:
- 請輸入謎底數(shù)字:77
- 請輸入您要猜的數(shù)字:20
- 猜小了!
- 請繼續(xù)輸入您要猜的數(shù)字:90
- 猜大了!
- 請繼續(xù)輸入您要猜的數(shù)字:80
- 猜大了!
- 請繼續(xù)輸入您要猜的數(shù)字:77
- 恭喜,猜對了!
2、小心死循環(huán)
死循環(huán)是指程序在流程控制中一直重復運行某一段代碼,無法依靠自身的控制終止循環(huán)。初學者很容易不小心寫出死循環(huán)。例如,在前文使用while循環(huán)完成從1到100的輸出任務中,如果將最后一行代碼“n = n + 1”刪掉,那么該循環(huán)就變成了死循環(huán)。這是因為n的值不會增加,從而會一直滿足“n <= 100”的條件無法跳出循環(huán)。試著運行如下代碼:
- >>> n = 1
- >>> while n < 100:
- ... print(n)
- ...
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- ……
當敲下最后一個回車鍵時,程序會在屏幕上不停地打印1,直到強制關閉程序窗口,或者按Ctrl+C鍵終止程序。死循環(huán)可能會使電腦崩潰或者造成其他與預期不符的后果,因此,在使用while循環(huán)時要格外小心,看看是否有能夠滿足條件跳出循環(huán)的“出口”。
需要指出的是,有些應用場景下需要使用死循環(huán)(例如,操作系統(tǒng)最外層是死循環(huán),保證電腦一直運行),也就是說寫出死循環(huán)不一定是錯的,但應該僅當清楚自己在做什么時,才寫死循環(huán)。
>>本文地址:http://uj2y2uok.com/zhuanye/2020/48635.html
聲明:本站稿件版權均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉載。
1 您的年齡
2 您的學歷
3 您更想做哪個方向的工作?