目錄
一、while回圈
二、for回圈
三、while_else和for_else
四、break、continue、exit()、pass
五、練習
第9課練習參考答案:
回圈:事物周而復始的運動或變化,
|
點我觀看《明日邊緣》視頻 |
點我觀看《源代碼》視頻 |
有很多回圈題材的電影,例如上面看到的《明日邊緣》《源代碼》以及《恐怖郵輪》等,這種題材的電影主角都一開始身陷回圈中,然后想方設法找出真想,最終逃出回圈,
為了讓我們的程式重復執行某些指令,我們就需要用到回圈陳述句,
在Python中的回圈陳述句主要有while回圈和for回圈,
一、while回圈
while回圈的基本格式如下:
while 條件運算式:
條件滿足時,需要執行的陳述句1
條件滿足時,需要執行的陳述句2
……
條件滿足時,需要執行的陳述句N
敲黑板劃重點:while回圈的特點是先判斷,當條件運算式為真時,再執行回圈體內的陳述句,其執行流程如下圖所示,

實體1:輸出1到10之間的所有偶數,
number = 1
while number <= 10:
if number % 2 == 0:
print(number)
number += 1
number的初始值為1,while回圈中的條件運算式判斷number是否還在10以內,如果為真,則執行回圈體內的陳述句,在回圈體內,因為我們是要輸出所有的偶數,所以需要if陳述句對每個數進行判斷,判斷偶數較簡單的方法是使該數值與2取余數,如果余數為0(即判定該數為偶數),則輸出該數,number+=1的作用是實作從1到10的累加,
如果將number+=1洗掉會發生什么?
在回圈體內number的值將永遠為1,且因為number永遠為1,number<=10結果將永遠為真,從而導致本回圈成為死回圈(無限回圈,就像最開始的電影情節),
敲黑板劃重點*2:每一個回圈陳述句都需要預先設定好退出回圈的機制,如上面的number<=10和number+=1形成對回圈的控制,在撰寫回圈陳述句的時候,務必要檢查此點,
敲黑板劃重點*3:在回圈陳述句中,類似if 陳述句,同樣需要注意冒號和縮進對陳述句塊的控制,
實體2:撰寫一段程式列印如下圖形,
*
**
***
****
*****
******
*******
********
*********
該圖形第1行1個*,從第2行開始每行增加一個*,一直到第9行由9個*組成,
代碼如下:
n = 1
while n <= 9:
print("*" * n)
n += 1
接下來,我們仔細研究這一段代碼的執行程序,然后回答三個問題:
問題1:回圈體執行了幾次?
問題2:結束回圈時,n的值是多少?
問題3:n<=9判斷了多少次?
n的初始值為1,碰到while,第一次判斷n<=9,此時n=1,n<=9為真,進入第一次回圈,執行回圈體內的陳述句,輸出*,通過n+=1,n的值變為2;然后再次判斷n<=9,此時n=2,n<=9為真,進入第二次回圈,執行回圈體內的陳述句,輸出**;接下來以此類推,當到了第9此回圈時,n的值為9,輸出*********(9個*),通過n+=1,n的值變為10,第10次判斷n<=9,n=10,n<=9為假,結束回圈,
你現在可以回答之前提出的三個問題了嗎?你的答案是什么?
接下來還有兩個值得思考的地方:
問題4:為什么初始要定義n的值?
問題5:如果初始n=0,代碼應進行哪些調整?
二、for回圈
在python中,for回圈可以遍歷任何序列,比如串列、字串,
for回圈的基本格式如下:
for 變數 in 序列:
回圈陳述句
for回圈的執行流程:

實體3:輸出字串中的每一個字母(for in string)
name = "Tom"
for word in name:
print(word)
輸出結果:
T
o
m
運行程序:序列為字串,逐一從name中取出每一個元素存入到word中,遍歷完所有元素回圈結束,word在退出回圈時的值為“m”,
實體4:輸出一年四季(for in list)
seasons = ['Spring','Summer','Autumn','Winter']
for season in seasons:
print(season)
輸出結果:
Spring
Summer
Autumn
Winter
運行程序:序列為串列,逐一從seasons中取出每一個元素存入到season中,遍歷完所有元素回圈結束,season在退出回圈時的值為“Winter”
實體五:輸出0到5之間的所有整數,
for i in range(6):
print(i)
輸出結果:
0
1
2
3
4
5
range函式用來回傳一個數字序列,例如range(6),將得到[0,1,2,3,4,5],range函式的完整格式為[<start預設時默認為0>,<end>,<step預設時默認為1>],例如range(1,10,2)將得到[1,3,5,7,9],即回傳從1開始到10結束步長為2的數字序列,但是要記住end應理解為開區間,數字序列的結束不包含end的值,
在本實體中,for i in range(6)等效于for i in [0,1,2,3,4,5],每次回圈回傳其中的一個值,(注意range(6)每次生成一個值,如果需要得到所有的值,可使用list(range(6)),)
for index,number in enumerate(range(6)):
print(index,number)
輸出結果:
0 0
1 1
2 2
3 3
4 4
5 5
enumerate函式用來回傳下標及元素,index獲得下標,number獲得元素,
words = "hello world"
for index,word in enumerate(words):
print(index,word)
輸出結果:
0 h
1 e
2 l
3 l
4 o
5
6 w
7 o
8 r
9 l
10 d
三、while_else和for_else
在python中的while回圈和for回圈還有一種特殊用法,即while_else和for_else,else可表示為回圈條件不滿足或回圈結束時執行的陳述句,
實體六:計算1到10000所有偶數的和,
number = 1
total = 0
while number <= 10000:
if number % 2 == 0:
total += number
number += 1
else:
print("1到10000所有偶數的和為%d" % total)
for i in range(1, 5):
print(i)
else:
print('The for loop is over')
輸出結果:
1
2
3
4
The for loop is over
四、break、continue、exit()、pass
break陳述句
在回圈陳述句中,如果遇到了break陳述句,將立即退出當前回圈,(當前回圈指的是break所屬層級的回圈,因為有可能出現多層回圈嵌套的情況)
start = 5
while start >= 0:
start -= 1
if start == 3:
break
print(start)
else:
print("Time is over")
print("I am a survivor.")
結果為:
4
I am a survivor.
將break換成continue,continue的作用是結束本次回圈進入下一次回圈,
start = 5
while start > 0:
start = start - 1
if start == 3:
continue
print(start)
else:
print("Time is over.")
print("I am survive.")
結果為:
4
2
1
0
Time is over.
I am survive.
再將continue換成exit(),exit()的作用是終止整個程式,多用來處理例外,
start = 5
while start > 0:
start = start - 1
if start == 3:
exit()
print(start)
else:
print("Time is over")
print("i am survive")
結果為:
4
再將exit()換成pass,pass的作用不做任何事,只做占位,
start = 5
while start > 0:
start = start - 1
if start == 3:
pass
print(start)
else:
print("Time is over")
print("I am a survivor.")
結果為:
4
3
2
1
0
Time is over
I am a survivor.
五、練習
1.有一分數序列,2/1、3/2、5/3、8/5、13/8、21/13……,求出這個數列的前20項之和,
2.求1+2!+3!+4!+……+20!的值,
3.將“hello world”用相反順序列印出來,
4.判斷字串中是否有連續三個英文單詞,如:"Hello World hello"的結果為True、"He is 123 man"的結果為False、"1 2 3 4"結果為False、"bla bla bla bla"的結果為True,(提醒:可能需要用到split()、isalpha()、isdigit()等函式)
第9課練習參考答案:
1.一年四季,根據輸入的月份輸出對應的季節,(輸入:3月,輸出:春季,輸入8月,輸出:夏季)(春季:3、4、5月,夏季:6、7、8月,秋季:9、10、11,冬季:12、1、2)
month = input("請輸入月份")
if month in ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']:
if month in ['3月','4月','5月']:
print("春季")
elif month in ['6月','7月','8月']:
print('夏季')
elif month in ['9月','10月','11月']:
print('秋季')
else:
print('冬季')
else:
print("請輸入正確的月份,格式如11月")
2.三只小熊,三只小熊的年齡分別為6、3、4歲,請編程實作對他們年齡從小到大排序,(bear1_old = 6,bear2_old = 3,bear3_old = 4,輸出3、4、6)
# 解決方案一:
bear1_old = 6
bear2_old = 7
bear3_old = 4
if bear1_old > bear2_old:
if bear2_old < bear3_old:
if bear3_old < bear1_old:
print(bear2_old,bear3_old,bear1_old)
else:
print(bear2_old,bear1_old,bear3_old)
else:
print(bear3_old,bear2_old,bear1_old)
else:
if bear1_old < bear3_old:
if bear2_old < bear3_old:
print(bear1_old,bear2_old,bear3_old)
else:
print(bear1_old,bear3_old,bear2_old)
else:
print(bear3_old,bear1_old,bear2_old)
# 解決方案二:
bears_old = [bear1_old,bear2_old,bear3_old]
bears_old.sort()
print(bears_old)
3.算數題,已知函式 ,根據輸入的x值計算y的值,設計一個程式實作以上演算法,
x = float(input("please input x value"))
if x <= 2.5:
y = x**2 + 1
else:
y = x**2 - 1
print(y)
4.兒童票,游樂園兒童購票的規定如下:若身高不超過1.1m,則無需購票;若身高超過1.1m但不超過1.4m,可買半票;如果超過1.4m,應買全票,全票價格為298元,設計一個程式實作以上演算法,小明和妹妹小青的身高分別為1.3m和0.9m,請問他們去游樂園玩需要付多少錢的門票?
def count_price(height):
if height <= 1.1:
discount_price = 0
elif height > 1.1 and height <= 1.4:
discount_price = 298 * 0.5
else:
discount_price = 298
return discount_price
summary = 0
for height in [1.3,0.9]:
price = count_price(height)
summary += price
print("應付金額為:",summary)
5.體質指數,體質指數 (Body Mass Index,簡稱BMI),是國際最常用來量度體重與身高比例的工具,它利用身高和體重之間的比例去衡量一個人是否過瘦或過肥,體制指數的計算公示,其中亞裔成年人的體質指數評判標準如下:
BMI<=18.5 過輕
18.5<BMI<=23.9 正常
24<=BMI<=27.9 超重
BMI>=28 肥胖
設計一個程式實作以上演算法,
height = float(input('請輸入身高'))
weight = float(input('請輸入體重'))
bmi = weight / height ** 2
if bmi <= 18.5:
print(bmi,"體重過輕")
elif bmi > 18.5 and bmi <= 23.9:
print(bmi,"體重正常")
elif bmi >= 24 and bmi <= 27.9:
print(bmi,"超重")
else:
print(bmi,"肥胖")
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/227541.html
標籤:python
上一篇:(2)CCF201803-1python實作碰撞的小球
下一篇:python-Xpath語法


