筆者:風起怨江南 出處:https://blog.csdn.net/JackMengJin 筆者原創,文章歡迎轉載,如果喜歡請點贊+關注,感謝支持!
說在前面:最近工作和學習原因,《Python學習系列》更新及其緩慢,還請親愛的讀者們多多海涵!
目錄
while循環語句的用法
上一講中主要研究了for循環語句的介紹和實戰訓練,這一講主要是對while循環語句的講解。
1. for循環和while循環的區別
先通過for循環和while循環的簡單的例子,直觀的感受下兩個循環的區別:
#for循環
for number in range(0,7):
print('Number is:',number)
Number is: 0
Number is: 1
Number is: 2
Number is: 3
Number is: 4
Number is: 5
Number is: 6
#while循環
count = 0
while (count < 7):
print("The count is:",count)
count = count + 1
print('over')
The count is: 0
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
over
同樣是循環數字0~6,但明顯看到兩個循環的不一樣:
例子1中for循環是將1~6範圍內遍歷後循環打印出來,全部執行(打印)完,再結束。
而例子2的while循環中,count值每次循環都會加1,直到不滿足while循環條件時,也就是當count等於7時,count < 7的結果爲false,此時跳出while循環,結束。
總結:for循環是在序列窮盡時停止,而while循環是在循環條件不成立時停止。
while循環,表達式是一個邏輯表達式,必須返回一個True或False,直到表達式變爲假,才退出。
說白了,while循環條件如果一直成立,那麼就一直執行循環!
死循環:
#while循環
number = 10
while number > 0:
print('當前變量值:', number)
print("循環結束")
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值: 10
當前變量值:
2. while循環的結構
while 判斷條件:
執行語句
while循環執行語句可以是單個語句或語句塊。
判斷條件可以是任何表達式,任何非零、或非空(null)的值均爲True。
當判斷條件爲 False 時,循環結束。
#while循環的結構
number = 0
while number < 7:
number += 1
print(number)
print('循環結束')
從上面這個簡單的例子可以明顯看到while循環的結構:
1.先聲明一個變量,賦值爲0;
2.while + 判斷條件,這裏的判斷條件我是用的邏輯運算符<;
3.判斷條件後要加冒號:作爲結束;
4.執行語句中number累計遞增+1;
5.打印變量number的值;
6.如果結果爲True,再重複執行while循環,先判斷number是否小於7,小於7的話繼續執行循環;
7.直到number累計增加到7的時候,此時不滿足<7的條件,跳出循環;
8.執行循環結束的打印。
3. 中斷循環
通常循環會不斷的執行代碼塊,直到條件爲假或使用完序列中的所有元素。那麼我們如何中斷循環並開始新迭代(進入‘下一輪’代碼塊執行流程)或直接結束循環?
這裏我們會用到:
break
break的中文就是打斷、間斷、休息等意思。如果要結束(跳出)循環,使用break。
#while循環break用法
count = 0
while (count < 7):
print("The count is:",count)
count = count + 1
# 當count循環到3時,跳出循環
if count > 3:
break
print('over')
The count is: 0
The count is: 1
The count is: 2
The count is: 3
over
可以看到當count循環到3的時候,if從句中執行了break,跳出了while循環。
#for循環break用法
for number in range(0,7):
print('Number is:',number)
#當nuemeber等於3的時候跳出循環
if number == 3:
break
Number is: 0
Number is: 1
Number is: 2
Number is: 3
continue
中文意思是繼續,用於跳過該次循環。
舉例:打印字符串'Python',如果字符爲h的時候,跳過該次循環:
#while循環continue用法
for letter in 'Python':
if letter == 'h':
continue
print('當前字母 :', letter)
當前字母 : P
當前字母 : y
當前字母 : t
當前字母 : o
當前字母 : n
通過上面的例子可以明顯看到continue的用法,再舉個例子更清晰看到用法:
#while循環
number = 10
while number > 0:
number = number - 1
if number == 5:
continue
print('當前變量值 :', number)
print("循環結束")
當前變量值 : 9
當前變量值 : 8
當前變量值 : 7
當前變量值 : 6
當前變量值 : 4
當前變量值 : 3
當前變量值 : 2
當前變量值 : 1
當前變量值 : 0
循環結束
總結:continue 語句跳出本次循環,而break跳出整個循環。
4. while循環實戰
說再多的理論,不如實際操作來的爽,下面講解幾個循環實戰。
- 企業發放的獎金根據利潤提成,利潤(I)低於或等於10萬元時,獎金可提10%;利潤高於10萬元低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分可提成7.5%;20萬元到40萬元之間時,高於20萬元的部分可提成5%;40萬元到60萬元之間時,高於40萬元的部分可提成3%;60萬元到100萬元之間時,高於60萬元的部分可提成1.5%;高於100萬元時,超過100萬元的部分按1%提成。計算給定的利潤I,應發獎金總數。
#利用數組和循環
#定義利潤列表
money = [1000000,600000,400000,200000,100000,0]
#定義提成比例列表,與利潤列表一一對應
percent = [0.01,0.015,0.03,0.05,0.075,0.1]
while True:
#獲取用戶輸入
i = input('請輸入利潤(退出請按q):')
if i == 'q':
#退出程序
exit(0)
#如果不是數字,重新開始循環,重新輸入數據
if not i.isdigit():
continue
#定義一個空的獎金列表,存放每一取間計算的獎金
reward = []
print('獎金爲:',end='')
I = int(i)
for x in range(0,6):
if I > money[x]:
#將每一個區間的獎金存放在獎金列表中,
reward.append((I - money[x]) * percent[x])
I = money[x]
#逆序獎金列表,目的爲方便輸出
reward.reverse()
#如果只有一個,直接輸出
if (len(reward)) == 1:
print(reward[0])
else:
#輸出每個取間的獎金,並求和
print('+ '.join([str(num) for num in reward]),'=',sum(reward))
運行結果:
請輸入利潤(退出請按q):10000000
獎金爲:10000.0+ 10000.0+ 6000.0+ 90000.0+ 6000.0+ 7500.0 = 129500.0
請輸入利潤(退出請按q):90000
獎金爲:9000.0
請輸入利潤(退出請按q):1234546
獎金爲:10000.0+ 10000.0+ 6000.0+ 2345.46+ 6000.0+ 7500.0 = 41845.46
請輸入利潤(退出請按q):43
獎金爲:4.3
請輸入利潤(退出請按q):1
獎金爲:0.1
請輸入利潤(退出請按q):2134557
獎金爲:10000.0+ 10000.0+ 6000.0+ 11345.57+ 6000.0+ 7500.0 = 50845.57
請輸入利潤(退出請按q):q
Process finished with exit code 0
更多while、for循環的組合用法會在後續學習實例中詳細講解,還請持續關注《Python學習》系列的更新,點贊關注走一波~
以上便是《Python學習07講》的所有內容,更多python學習請繼續關注我的博客——風起怨江南(傳送門),不定期更新,原創不易,如果喜歡請點贊和關注,謝謝大家的支持!
獲得更多免費的學習資料請添加微信公衆號——風起怨江南,謝謝大家的關注和支持!