国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

用動物做網(wǎng)站名稱可以投放廣告的網(wǎng)站

用動物做網(wǎng)站名稱,可以投放廣告的網(wǎng)站,網(wǎng)站編程工具,wordpress 發(fā)布時💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:Linux運維老紀的首頁…

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。

推薦:Linux運維老紀的首頁,持續(xù)學習,不斷總結,共同進步,活到老學到老
導航劍指大廠系列:全面總結 運維核心技術:系統(tǒng)基礎、數(shù)據(jù)庫、網(wǎng)路技術、系統(tǒng)安全、自動化運維、容器技術、監(jiān)控工具、腳本編程、云服務等。
常用運維工具系列:常用的運維開發(fā)工具, zabbix、nagios、docker、k8s、puppet、ansible等
數(shù)據(jù)庫系列:詳細總結了常用數(shù)據(jù)庫 mysql、Redis、MongoDB、oracle 技術點,以及工作中遇到的 mysql 問題等
懶人運維系列:總結好用的命令,解放雙手不香嗎?能用一個命令完成絕不用兩個操作
數(shù)據(jù)結構與算法系列:總結數(shù)據(jù)結構和算法,不同類型針對性訓練,提升編程思維,劍指大廠
非常期待和您一起在這個小小的網(wǎng)絡世界里共同探索、學習和成長。💝💝💝 ?? 歡迎訂閱本專欄 ??

Python之?條件與循環(huán)
技能目標
- 掌握條件語句 if
- 掌握循環(huán)語句 while
- 掌握循環(huán)語句 for
- 掌握循環(huán)控制語句breakcontinue
在程序的執(zhí)行過程中,經(jīng)常要使用條件判斷語句決定程序的執(zhí)行流轉,還要使用循環(huán)語
句進行相同代碼的重復執(zhí)行。它們在任何語言中都是非常重要的組成部分,熟練掌握才能更
好的控制程序。

2.1 Python 條件判斷

條件判斷語句是指根據(jù)條件表達式的不同計算結果,使程序流轉到不同的代碼塊。
Python 中的條件語句是 if 語句和 if else 語句。

2.1.1 if 條件語句

if 語句用于判斷某個條件是否成立。如果成立,則執(zhí)行語句內(nèi)的程序;否則跳過 if 語句,
執(zhí)行后面的內(nèi)容,語法格式如下。
語法:
if 條件表達式:
語句塊
語句塊是一組程序語句,Python 的語法中沒有用 java 等語言中的花括號表示一組語句,
而是采用空格縮進的方式表示一組語句。通常用 4 個空格表示一組語句,使程序員在編碼
時減少了代碼的工作量。示例 1 展示了 if 的使用。
示例 1:使用 if 語句判斷輸出相關信息。
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
money = 100
if money > 99:
#冒號結尾
print ('賊有錢')
#縮進 4 個空格
print ('窮瘋了')
#縮進 4 個空格
#輸出結果
>>>
賊有錢
定義變量 money=100,使用 if 語句時條件表達式 money>99 的值是布爾值 True,執(zhí)
行下面的 2 條打印語句,這 2 條打印語句都是前面有 4 個空格,表示它們是一個語句塊。
下面通過一個比較復雜的示例,熟悉 if 語句的使用場景。
示例 2:接收學生的考試成績,使用 if 語句判斷。如果考試成績大于等于 60 分,輸出
。
# coding=utf-8
print ('請輸入學生考試成績')
score = int(input())
print (score >= 60)
if score >= 60:
#冒號結尾
print ('合格')
#4 個空格縮進
#輸出結果
>>>
請輸入學生考試成績
80
True
合格
示例 2 中,通過變量 score 保存鍵盤輸入的成績 80。當 if 語句判斷當成績大于等于 60
時,輸出合格。在 Python3 中,input 方法默認返回為 str 類型。如果想要輸出 int 類型就
要改變輸出類型為 int。

2.1.2 條件表達式與關系運算符

使用 if 語句時,后面要用到條件表示式和關系運算符,它們可以經(jīng)過運算得到布爾值。
如前面示例的 score>=60 就是一個使用關系運算符“>=”的條件表達式,表示:如果 score
大于等于 60,則表達式的結果是 True();否則為 False()。條件表達式的語法如下。
語法:
操作數(shù) 關系運算符 操作數(shù)
關系運算符的前后 2 個數(shù)值,條件表達式的計算結果是布爾值。常用的關系運算符如
2-1 所示。
2-1 關系運算符
關系運算符說明
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于

示例 3:關系運算符的運算結果。

>>> print (10 == 9)
False
>>> print (10 != 9)
True
>>> print (10 > 9)
True
>>> print (10 < 9)
False
>>> print (10 >= 9)
True
>>> print (10 <= 9)
False
條件表達式 10==9 是判斷“==”運算符左右兩側的數(shù)值是否相等。因為 10 不等于 9,所
以,10==9 的運行結果是 False。
條件表達式 10!=9 是判斷“!=”運算符左右兩側的數(shù)值是否不相等。因為 10 不等于 9,所
以,10!=9 的運行結果是 True。
其它的幾種也是采用相同的方式進行判斷并得到運算結果。

2.1.3 if-else 條件語句

if 語句還可以加上 else 關鍵字,根據(jù)條件判斷,決定執(zhí)行不同的語句塊。當條件為真
時,執(zhí)行語句塊 1。當條件為假時,執(zhí)行語句塊 2,語法如下。
語法:
if 條件表達式:
語句塊 1
else:
語句塊 2
示例 4:接收學生的考試成績,使用 if 語句判斷。如果考試成績大于等于 60 分,輸出
;否則,輸出需要努力
print ('請輸入學生考試成績')
score = int(input())
if score >= 60 :
print ('合格')
else:
print ('需要努力')
#輸出結果
>>>
請輸入學生考試成績
80
#執(zhí)行第 1 遍,輸入 80
合格
請輸入學生考試成績
50
#執(zhí)行第 2 遍,輸入 50
需要努力
1 遍執(zhí)行時,輸入 80,條件為 True,執(zhí)行 print ‘合格語句;第 2 遍執(zhí)行時,輸入
50,條件為 False,執(zhí)行 print ‘需要努力。if-else 語句是在根據(jù)條件決定程序需要執(zhí)行的內(nèi)
容時使用。語法上要注意 if else 后面都是要使用冒號,它們前面的空格縮進是相同的,
表示它們是一個整體,而它們對應的語句塊也是同級的,整體的代碼看起來比其它語言更加
簡潔易懂。

2.1.4 多重 if 語句

使用 if-else 語句通過條件判斷使程序能夠有 2 條執(zhí)行路徑,但有時還需要更多條路徑進行處理,這時可以加入 elif 關鍵字處理。
語法:
if 條件表達式 1:
語句塊 1
elif 條件表達式 2:
語句塊 2
elif 條件表達式 3:
語句塊 3
......
else:
語句塊
當條件 1 成立時,執(zhí)行條件 1 對應的語句塊 1。當條件 2 或條件 3 成立時,則分別執(zhí)行
對應的語句塊。當前面的條件都不成功時,執(zhí)行 else 對應的語句塊。
示例 5:接收學生的考試成績。如果考試成績大于等于 90 分,則輸出優(yōu)秀。如果考
試成績小于 90 分且大于等于 70 分,則輸出良好。如果考試成績小于 70 分且大于等于 60
分,則輸出合格。如果考試成績小于 60 分,則輸出需要努力。
print ('請輸入學生考試成績')
score = int(input())
if score >= 90:
print ('優(yōu)秀')
elif score >= 70:
print ('良好')
elif score >= 60:
print ('合格')
else:
print ('需要努力')
#輸出結果
>>>
請輸入學生考試成績
100
優(yōu)秀
請輸入學生考試成績
80
良好
請輸入學生考試成績
60
合格
請輸入學生考試成績
50
需要努力
使用鍵盤輸入不同的值,執(zhí)行了不同的語句塊,輸出不同的結果。if 語句中,else 關鍵
字是可選項,可以有也可以沒有,需要根據(jù)程序的需要靈活掌握。

2.1.5 if 語句的常見問題

在使用 if 語句時,常常會出現(xiàn)下面一些問題。
(1)使用 if-elif-else 語句時,容易出現(xiàn)邏輯錯誤。因為條件是由上向下判斷,如果條件
成立,下面的條件判斷將不再執(zhí)行。示例 5 的代碼中,如果把條件表達式的順序顛倒,比
如把 score>=60 放到 score>=90 之前,那么輸入 100 時,首先判斷的 score>=60 是成立
的,就不會再執(zhí)行 score>=90 條件表達式,程序將無法按要求得到結果。以下代碼就是邏
輯錯誤的典型情況:
score = int(input())
if score >= 60:
print ('合格')
elif score >= 70:
print ('良好')
elif score >= 90:
print ('優(yōu)秀')
(2)if 語句中,語句塊沒有縮進也是容易犯的錯誤,如下代碼直接報錯:
score = int(input())
if score >= 90:
print ('優(yōu)秀')
#沒有縮進
編寫代碼時,要保證同級語句縮進的空格必須絕對一致。即使只有一個空格的差別,它
們已經(jīng)表示不同的語句塊了。如下代碼所示:
score = int(input())
if score >= 90:
print ('優(yōu)秀 1')
#沒有縮進
print ('優(yōu)秀 2')
#多了一個空格
2 條輸出語句比第 1 條多了 1 個空格,執(zhí)行時會報錯。
(3)從其它程序設計語言轉為 Python 的程序員,由于習慣經(jīng)常會忘記表達式后面的冒
號,需要多練習熟悉語法。

2.2 Python 的循環(huán)

編寫程序時經(jīng)常有一些代碼塊需要重復運行,Python 提供了 while for 語句實現(xiàn)循環(huán)
操作。

2.2.1 while 循環(huán)

下面講解 while 語句的語法和使用,在理解 while 語句的基礎上,會介紹 Python 字符
串的格式化輸出和注釋。

1. while 循環(huán)語句

while 循環(huán)可以根據(jù)條件表達式的判斷結果,決定是否要重復執(zhí)行語句塊,語法如下。
語法:
while 條件表達式:
循環(huán)操作語句
循環(huán)的條件表達式后面也要使用冒號,然后縮進寫循環(huán)操作語句。while 語句是先判斷
后執(zhí)行。即:先判斷條件表達式是否成立,如果條件表達式的值為 True,則執(zhí)行循環(huán)操作
語句。如果其值為 False,則跳出循環(huán),執(zhí)行 while 語句后面的語句。9 頁 共 24
示例 6:當 count 值小于正整數(shù) 5 時,執(zhí)行加 1 操作。當 count 大于等于 5 時,輸出
count 的值。
count = 0
while (count < 5):
count = count + 1
print (count)
#輸出結果
>>>
5
變量 count 初始值是 0,當 count<5 時,循環(huán)執(zhí)行 count=count+1 語句。如第 1 輪循
環(huán)執(zhí)行時,首先判斷條件表達式 0<5,得到結果為 True。因為條件表達式 0<5 成立,則執(zhí)
count=count+1 語句,count 值變?yōu)?1。此時示例 6 while 循環(huán)中沒有其它語句同級,
則進入 while 語句第 2 輪循環(huán)。仍然是先判斷條件表達式 1<5,條件依然成立,則重新再執(zhí)
count=count+1count 值變?yōu)?2。依此類推,當 count 等于 4 的時候,4<5 成立,執(zhí)行
count=count+1 語句,count 變?yōu)?5。在進入第 6 輪循環(huán)之前,判斷條件表達式 5<5 False
退出 while 循環(huán),最后的輸出結果是 5。
下面再來看一個復雜的示例,加深對 while 循環(huán)的理解。
示例 7:輸入 5 門課程的考試成績,計算平均分并輸出。
i= 1
sum = 0
while i <= 5:
#循環(huán)條件
print ('請輸入第%d 門課程的考試成績' % i)
#格式化,后面介紹
sum = sum + int(input())
#循環(huán)操作
i = i + 1
avg = sum / ( i - 1 )
print ('5 門課程的平均成績是%d' % avg)
#格式化,后面介紹
#輸出結果
>>>
請輸入第 1 門課程的考試成績
77
請輸入第 2 門課程的考試成績
請輸入第 3 門課程的考試成績
88
請輸入第 4 門課程的考試成績
56
請輸入第 5 門課程的考試成績
55
5 門課程的平均成績是 66
示例 7 中,用于控制循環(huán)的變量 i 初始值為 1while 條件表達式是 i <= 5,循環(huán)語句塊
i = i + 1,說明循環(huán)語句塊可以執(zhí)行 5 次。其中 print ('請輸入第%d 門課程的考試成績' %
i)語句使用了格式化輸出的形式,后面會介紹到。

2. 字符串的格式化輸出

示例 7 中有 2 處使用了字符串的格式化輸出,代碼如下:
print ('請輸入第%d 門課程的考試成績' % i)
print ('5 門課程的平均成績是%d' % avg)
字符串的格式化是將若干值插入帶有“%”替代符的字符串中,從而可以動態(tài)地輸出字符
串。字符串中的”%d”,表示插入的是一個整型數(shù)據(jù),字符串后面的“% i”表示獲取變量 i 的值。
字符串格式化中可以使用的替代符除了“%d”外,還有其他的替代符,如表 2-2 所示。
2-2 常用的替代符
替代符描述
%d格式化整型
%s格式化字符串
%f格式化浮點數(shù)字格式化浮點數(shù)字

示例 8:常用替代符的使用情況。

num = 5

numStr = "5"
numF = 5.55
print ("%d " % num)
print ("%s " % numStr)
print ("浮點數(shù)是:%f" % numF)#輸出結果
>>>
5
5
符數(shù)是:5.550000
字符串中使用對應的替代符,把相應的變量插入到了相應的位置。
字符串中還可以使用多個替代符,對應的變量使用元組即可,示例代碼如下。
first = 1
second = 2
print ("%d 名和第%d " % (first, second))
#輸出結果
>>>
1 名和第 2
使用時要注意替代符和變量的順序,位置不能放錯;否則可能會出現(xiàn)類型不匹配的問
題。
還可以使用字典格式化多個值,示例代碼如下:
num = {"first":1, "second":2}
print ("%(first)d 名和第%(second)d " % num)
#輸出結果
>>>
1 名和第 2
因為字典是無序的,所以使用字典時通過鍵獲得與之對應的值。

3. Python 的注釋

對于編寫好的代碼,經(jīng)過一段時間之后,有可能會忘記代碼的具體作用,所以代碼中
要寫一些注釋文字,以便于日后閱讀和修改代碼。Python 中使用“#”開頭表示注釋,可以在
代碼中添加注釋。
示例 9:添加了注釋的 Python 代碼
# 輸入 5 門課程的考試成績,計算平均成績
i= 1
# 初始化循環(huán)計數(shù)器 i
sum = 0
# 初始化總成績變量 sum
while i <= 5:
# 重復執(zhí)行 5 次接收考試成績,求和的操作
print ('請輸入第%d 門課程的考試成績' % i)
sum = sum + int(input())
# 每門課程計入總成績
i = i + 1
# 計數(shù)器 i 增加 1
avg = sum / ( i - 1 )
# 計算平均成績
print ('5 門課程的平均成績是%d' % avg)
# 輸出平均成績
對于“#+空格開頭的文字,Python 解釋器不會做任何處理。而代碼中的注釋,可以提
高代碼的可讀性。
Python 注釋有兩種用法。一是,在行開頭就使用“#”的稱為單行注釋;二是,緊隨同行
代碼,以“#”開頭的稱為行內(nèi)注釋。注釋并不是在每一行都需要,只需要把不易讀的代碼做
注釋即可。

4. while 循環(huán)嵌套

while 語句中,可以包含另一個 while 語句,即:使用 while 語句可以實現(xiàn)嵌套循環(huán)。
示例 10:使用 while 語句分別接收 2 名學生的 5 門課程考試成績,計算并輸出每個人
的平均成績。
j = 1
#初始化外層循環(huán)計數(shù)器 j
prompt = '請輸入學生姓名:'
while j <= 2:
#外層循環(huán)
sum = 0
#每個人的總成績清零
i = 1
#初始化內(nèi)層循環(huán)計數(shù)器 i
name = input(prompt)
while i <= 5:
#內(nèi)層循環(huán)
print ('請輸入第%d 門課程的考試成績' % i)
sum = sum + int(input())
i = i + 1
avg = sum / ( i - 1 )
print ('%s 5 門課程的平均成績是:%d' % (name,avg))
j = j+1print ('學生成績輸入完成')
示例 10 代碼中,外層的 while 語句用于輸入學生名字,用變量 j 控制循環(huán)次數(shù),共 2
次。內(nèi)層的 while 語句用于輸入 5 門成績,用變量 i 控制。也就是在外層循環(huán)輸入一個名字
后,需要輸入 5 門成績,然后輸出這名學生的成績平均值,一共可以輸入 2 名學生。
示例 10 中,Python 的代碼結構非常清晰,當?shù)?3 行外層循環(huán)執(zhí)行時,從第 4 行到 13
行是一個整體執(zhí)行。當?shù)?7 行內(nèi)層循環(huán)執(zhí)行時,第 8 行到 10 行是一個整體執(zhí)行,這種在循
環(huán)中還有循環(huán)的結構稱為嵌套循環(huán)。嵌套循環(huán)是編寫程序時經(jīng)常使用的結構,嵌套可以有更
多層,但一般不會使用超過三層的嵌套。
注意:第 4 行的代碼 sum = 0 放在了外層循環(huán)里,是因為每次輸入一個人的 5 門成績
后,sum 需要進行清零處理。如果不這樣做,sum 的值就會保存,程序就無法達到預期的
目的。

2.2.2 for 循環(huán)

for 語句是另一種用于控制循環(huán)結構的方式。Python while 是使用條件判斷執(zhí)行循環(huán),
for 是使用遍歷元素的方式進行循環(huán)。

1.for 循環(huán)的幾種方式

for 循環(huán)的語法結構如下。
語法:
for 變量 in 集合:
語句塊
Python for 語句有以下幾種使用方式。

(1)for 循環(huán)可以對字符串進行遍歷,逐個獲得字符串的每個字符,示例代碼如下:

for letter in 'Python':
print ('Current letter:%s' % letter)
#輸出結果
>>>
Current letter:P
Current letter:y
Current letter:t
Current letter:h
Current letter:o
Current letter:n
語句“for letter in 'Python':”的作用是對’Python’字符串的字符逐個遍歷,把字符賦值給
變量 letter,然后執(zhí)行 for 對應的語句塊。如第一輪執(zhí)行 for 語句時,letter 的值是“P”,執(zhí)行
輸出語句。然后返回第二輪執(zhí)行 for 語句,letter 的值是“y”。依此類推,當執(zhí)行完最后一個
字符“n”的語句塊后,for 循環(huán)已經(jīng)沒有字符再可以獲得,循環(huán)退出。

(2)for 循環(huán)可以對列表和元組進行遍歷,示例代碼如下:

fruits = ["西瓜","蘋果","葡萄"]
for fruit in fruits:
print (fruit)
#輸出結果
>>>
西瓜
蘋果
葡萄
語句“for fruit in fruits:”的作用是遍歷列表 fruits 中的元素,把元素賦值給 fruit,輸出語
句每次輸出一個水果。

(3)需要循環(huán)操作相同的內(nèi)容時,可以用 for 循環(huán)和 range()函數(shù)結合使用,先看看range()

函數(shù)的作用,示例代碼如下:

print (list(range(0,5)))
print (list(range(0,5,2)))
#輸出結果
>>>
[0, 1, 2, 3, 4]
[0, 2, 4]
Python3 版本中,range() 函數(shù)返回的是一個可迭代對象(類型是對象),而不是列表
類型,所以打印的時候不會打印列表。list() 函數(shù)是對象迭代器,把對象轉為一個列表。返
回的變量類型為列表,Range(0,5)輸出由第一個參數(shù) 0 開始,默認每次加 1,當大于等于第
二個參數(shù)值時結束,所以列表中不包括第二個參數(shù)值。而 Range(0,5,2)語句中多了第三個
參數(shù) 2,其作用是每次加 2,最后的列表值是“[0,2,4]”。所以 range()函數(shù)的作用是創(chuàng)建一個
迭代對象,取值范圍是從起始數(shù)字開始到結束數(shù)字之前的內(nèi)容。
for 語句可以對列表進行遍歷,所以,它可以對 range()函數(shù)的結果進行遍歷。
示例代碼如下:
for i in range(0,5):
print ('北京歡迎您')
#輸出結果
>>>
北京歡迎您
北京歡迎您
北京歡迎您
北京歡迎您
北京歡迎您
range(0,5)是由 0-4 組成的列表,循環(huán)共執(zhí)行了 5 遍,輸出語句執(zhí)行了 5 遍,變量 i
值就是每次遍歷列表的元素值。

2.for 循環(huán)示例

示例 11:接收某個學生三門課程的考試成績,計算輸出平均成績。
subjects = ('Python', 'MySQL', 'Linux')
sum = 0
for i in subjects:
print ('請輸入 %s 考試成績:'% i)
score = int(input())
sum +=score
# sum = sum+score 等價
avg = sum / len(subjects)
print ('小明的平均成績是 %d ' % avg)
#輸出結果
>>>
請輸入 Python 考試成績:
11
請輸入 MySQL 考試成績:
請輸入 Linux 考試成績:
33
小明的平均成績是 22
示例 11 中,subjects 列表保存三門課程的名稱,使用 for 循環(huán)遍歷課程列表 subjects
接收考試成績后使用變量 sum 累加,最后計算并輸出平均成績。

3.邏輯運算符

任何語言中都有邏輯表達式,它是用邏輯運算符和變量連接起來的表達式。表 2-3
Python 的邏輯運算符。
2-3 邏輯運算符
運算符名稱描述
and邏輯與如果兩個操作數(shù)都為 True,則表達式值為 True
or邏輯或如果兩個操作數(shù)中有一個為 True,則表達式值為 True
not邏輯非求反運算,如果操作數(shù)值為 True,則表達式值為 False,如果操作數(shù)值為 False,則表達式值為 True

下面演示邏輯運算符的使用方法:

>>> print (not True)
False
>>> print (True and False)
False
>>> print (True or False)
True
? not 是求反運算,所以 not True 的結果是 False
? and 是與運算,只要有一個值是 False,結果就是 False,所以(True and False)的結果
False
? or 是或運算,只要有一個值是 True,結果就是 True,所以(True or False)的結果是 True。
下面對成績做一個有效性的判斷,示例代碼如下:
>>> score =180
>>> if(score<0 or score >100):
print ('成績錯誤,不能小于 0 或大于 100')
成績錯誤,不能小于 0 或大于 100
>>> if(not (score>=0 and score <=100)):
print ('成績錯誤,不能小于 0 或大于 100')
成績錯誤,不能小于 0 或大于 100
代碼中,定義成績變量 score 值是 180,使用了 2 種邏輯表達式進行判斷。第 1 種是使
if(score<0 or score >100),作用是判斷 score 小于 0 或者是大于 100 時條件成立。因為
180 大于 100,所以程序會輸出錯誤提示。第 2 種是使用 if(not (score>=0 and score <=100))
同時使用 not and 進行的運算。首先,計算(score>=0 and score <=100),判斷 score
是否在 1 100 之間。因為 score 值是 180,所以該表達式的結果是 False,再用 not 運算
符對它進行取反運算,最終得到的結果是 True。此時,if 語句的條件表達式成立,執(zhí)行輸出
語句。這 2 種方式的作用是相同的,但第 1 種方式更容易理解,實際編寫代碼時要根據(jù)情
況,選擇容易理解的方式。

4.for 循環(huán)嵌套

while 循環(huán)一樣,for 語句也可以使用嵌套的方式。
示例 12:使用 for 語句分別接收 2 名學生的 5 門課程考試成績,計算并輸出每個人的
平均成績。
students =['小明','小張']
subjects = ('Python','MySQL','Linux')
for student in students:
#外層循環(huán)
sum = 0
for subject in subjects:
#內(nèi)層循環(huán)
print ('請輸入 %s %s 考試成績:'%(student,subject))
score = int(input())
sum +=score
avg = sum / len(subjects)
print ('%s 的平均成績是 %d ' %(student,avg))
#輸出結果
>>>
請輸入 小明 的 Python 考試成績:
11
請輸入 小明 的 MySQL 考試成績:
22
請輸入 小明 的 Linux 考試成績:
33
小明的平均成績是 22
請輸入 小張 的 Python 考試成績:
33
請輸入 小張 的 MySQL 考試成績:
44
請輸入 小張 的 Linux 考試成績:
55
小張的平均成績是 44
while 的方式基本相同,示例 12 代碼的外層循環(huán)用于控制對學生進行遍歷,內(nèi)層循
環(huán)控制對課程遍歷。需要注意:for 語句的變量名沒有使用 i、j 這樣沒有意義的變量,而是
使用了 student、subject 這種見名知意的變量名,使程序的可讀性更強,避免了引用變量時
出現(xiàn)引用錯誤的情況。
2.2.3 循環(huán)控制
使用 while for 語句執(zhí)行循環(huán)操作時,有可能需要改變循環(huán)的正常執(zhí)行順序,這時就
需要用循環(huán)控制語句實現(xiàn),循環(huán)控制語句有 break continue。
1.break 語句
在循環(huán)語句塊中使用 break 語句,可以跳出整個循環(huán)。
示例 13:對輸出平均成績的代碼進行修改,當成績無效時,使用 break 退出循環(huán)。
students =['小明','小張']
subjects = ('Python','MySQL','Linux')
for student in students:
#外層循環(huán)
sum = 0
for subject in subjects:
#內(nèi)層循環(huán)
print ('請輸入 %s %s 考試成績:' % (student,subject))
score = int(input())
if(score < 0 or score > 100):
print ('輸入的成績需要大于 0 或小 100,循環(huán)退出')
break;
#break 退出內(nèi)層循環(huán)
sum += score
avg = sum / len(subjects)
print ('%s 的平均成績是 %d ' % (student,avg))
#輸出結果
>>>
請輸入 小明 的 Python 考試成績:
111
輸入的成績需要大于 0 或小 100,循環(huán)退出
小明的平均成績是 0
請輸入 小張 的 Python 考試成績:
示例 13 中的大部分代碼是前面示例的代碼,只是在第 8-10 行加入了對成績有效性的
判斷。如果不符合條件,則退出循環(huán)。當輸入 111 時,條件表達式 score<0 or score>100
的值為 True,程序執(zhí)行 8-10 行,break 退出 for 循環(huán)。
break 只和一個 for 循環(huán)對應,雖然有 2 層循環(huán),但它只會結束離它最近的循環(huán),這里
就是第 2 for 循環(huán)。第 2 層循環(huán)結束后,接著執(zhí)行后面的第 12 行和 13 行代碼,第 1
的循環(huán)照常遍歷執(zhí)行,開始輸入第 2 個學生小張的成績。
2.continue 語句
continue 的作用和 break 不同,它不是結束整個循環(huán),而是跳過當前一輪循環(huán)體的剩
余語句,重新測試循環(huán)狀態(tài),準備進入下一輪循環(huán)。
示例 14:分別接收 2 個學生 3 門課程('Python','MySQL','Linux')的考試成績,要求成績
的取值范圍是大于等于 0 且小于等于 100;計算并輸出每個學生的平均成績,示例 14 代碼
如下。
students =['小明','小張']
subjects = ('Python','MySQL','Linux')
for student in students:
#1 for 循環(huán)
sum = 0
i = 0
while(i < len(subjects)):
#2 while 循環(huán)
print ('請輸入 %s %s 考試成績:' % (student,subjects[i]))
score = int(input())
if(score < 0 or score > 100):
print ('輸入的成績需要大于 0 且小于 100,重新輸入')
continue
#跳到下一輪循環(huán)
sum += scorei = i + 1
avg = sum / len(subjects)
print ('%s 的平均成績是 %d ' % (student,avg))
#輸出結果
>>>
請輸入 小明 的 Python 考試成績:
11
請輸入 小明 的 MySQL 考試成績:
111
輸入的成績需要大于 0 或小 100,重新輸入
請輸入 小明 的 MySQL 考試成績:
22
請輸入 小明 的 Linux 考試成績:
33
小明的平均成績是 22
請輸入 小張 的 Python 考試成績:
1 層使用的是 for 循環(huán)遍歷學生,第 2 層使用 while 循環(huán)遍歷成績,使用 continue
跳到離它最近的循環(huán)的下一輪,也就是第 2 層的 while 循環(huán)的下一輪。因為執(zhí)行 continue
后,第 13 行的 i= i+1 沒有執(zhí)行,而是重新又執(zhí)行第 6 行的 while 循環(huán),所以就是對當前課
程的成績重新輸入。當輸入 MySQL 的成績?yōu)?111 時,提示數(shù)據(jù)有誤,然后又提示需要重新
輸入 MySQL 成績,代碼更加健壯。
2.2.4 循環(huán)綜合案例
下面通過 Python 語言實現(xiàn)用戶登錄示例,介紹循環(huán)語句在編程中的重要性。
1.需求描述
本案例的需求如下:
1)顯示操作的菜單,有 3 個選項,分別用字母 NE、Q 表示。
2N 表示輸入新的用戶名和密碼。
3E 表示使用用戶名和密碼登錄。
4Q 表示退出程序。
2.編寫功能
整體代碼較多,為了演示清楚,采用分步完成功能的方式。
(1)首先輸出菜單,輸入字母 N、E、Q 后執(zhí)行相應代碼塊,代碼如下:
kgc ={}
#字典,用于保存用戶名和密碼
1 prompt = '''
(N)ew User Login
(E)ntering User Login
(Q)uit
Enter choice:'''
2 while True:
#整體的循環(huán)制,只有輸入 q 時程序退出
3
choice = input(prompt).strip()[0].lower()
print ('\n--You picked : [%s]' % choice)
4
if choice not in 'neq':
print ('--invalid option,try again--')
else:
5
if choice=='n':
print ('input n')
elif choice=='e':
print ('input e')
else :
print ('quit')
6
break
變量 prompt 是顯示菜單的內(nèi)容,位置 3 的語句“input(prompt).strip()[0].lower()”的作用
是接收鍵盤輸入的字符串,使用 strip()函數(shù)去掉字符串前后的空格,然后獲取輸入字符串的
第一個非空的字符。函數(shù) lower()的作用是把字符變成小寫字母,為后面的條件判斷作準備。
位置 2 while True 表示后面的語句塊會不停的重復執(zhí)行。只有當用戶輸入字母“q”時,
才會執(zhí)行位置 6 break 語句,退出 while 循環(huán)。
位置 4 是判斷用戶輸入的字符是不是“n”、“e”“q”。如果不是這三個字母,則程序輸出
'--invalid option,try again--',重新返回位置 2 的代碼,再次執(zhí)行 while 循環(huán)。如果是“n”“e”、
“q”中的任一個字母,則程序轉向執(zhí)行位置 5 的代碼,進入條件表達式的判斷,并根據(jù)條件
表達式的結果執(zhí)行對應的功能。
(2)在上面代碼的基礎上編寫 n 對應的功能,代碼如下:
#省略前面的代碼
if choice=='n':
prompt1 = 'login desired:'
1
while True:
name = raw_input(prompt1)
2
if name in kgc:
prompt1 ='--name taken,try another:'
3
continue
else:
4
break
pwd = input('password:')
kgc[name] = pwd
elif choice=='e':
#省略
當輸入 n 時進行到代碼塊,位置 1 使用 while True 不停循環(huán),位置 2 用于判斷字典 kgc
中是不是已經(jīng)存在了用戶名,如果存在則執(zhí)行位置 3 continue 語句繼續(xù)下次循環(huán),讓用
戶重新輸入用戶名;不存在則執(zhí)行位置 4 break 語句,退出 while 循環(huán)。然后再輸入對應
的密碼,把用戶名和密碼保存到字典中。
(3)字符 e 對應的功能是登錄,代碼如下:
#省略前面的代碼
elif choice=='e':
name = input('login:')
pwd = input('password:')
1
password = kgc.get(name)
2
if password == pwd:
print ('--welcome back--',name)
else:
print ('--login incorrect--')
else :
print ('quit')
break
#省略
進入字符 e 對應的功能輸入用戶名 name 和密碼 pwd 后,在位置 1 處通過輸入的用戶
名在字典 kgc 中查找對應的密碼 password。位置 2 用于判斷字典中的密碼和用戶輸入的密
碼是否相同,如果相同,輸出歡迎文字;如果不同,輸出登錄失敗的文字。
(4)通過上面的步驟可以清楚的理解整個程序的執(zhí)行流程,整體的代碼如下:kgc = {}
prompt = '''
(N)ew User Login
(E)ntering User Login
(Q)uit
Enter choice:'''
while True:
choice = input(prompt).strip()[0].lower()
print ('\n--You picked : [%s]' % choice)
if choice not in 'neq':
print ('--invalid option,try again--')
else:
if choice=='n':
prompt1 = 'login desired:'
while True:
name = input(prompt1)
if name in kgc:
prompt1 ='--name taken,try another:'
continue
else:
break
pwd = input('password:')
kgc[name] = pwd
elif choice=='e':
name = input('login:')
pwd = input('password:')
password = kgc.get(name)
if password == pwd:
print ('--welcome back--',name)
else:
print ('--login incorrect--')
else :
print ('quit')
break
#輸出結果
>>>
(N)ew User Login
(E)ntering User Login
(Q)uit
Enter choice:n
--You picked : [n]
login desired:marry
password:111
(N)ew User Login
(E)ntering User Login
(Q)uit
Enter choice:e
--You picked : [e]
login:marry
password:111
--welcome back-- marry
(N)ew User Login
(E)ntering User Login
(Q)uit
Enter choice:q
--You picked : [q]
quit
執(zhí)行程序時輸入 n 選擇,輸入新用戶 marry 和密碼 111;再輸入 e,使用用戶名 marry
和密碼 111 登錄,顯示的是“--welcome back—marry”;最后輸入 q 時程序退出,說明程序
是執(zhí)行成功的。其它流程同學們也可以自行嘗試,理解程序的控制方式。
http://aloenet.com.cn/news/33308.html

相關文章:

  • 沒有備案的網(wǎng)站可以做淘寶客seo網(wǎng)絡推廣培訓班
  • 校園論壇網(wǎng)站怎么做谷歌收錄提交入口
  • 長沙岳麓區(qū)做網(wǎng)站seo內(nèi)容優(yōu)化是什么
  • 怎么做網(wǎng)站首頁全媒體廣告代理
  • 去國外做移動支付網(wǎng)站嗎廣告投放網(wǎng)站
  • 四川網(wǎng)站建設一站式服務商互聯(lián)網(wǎng)公司網(wǎng)站模板
  • 企業(yè)oa系統(tǒng)免費優(yōu)化網(wǎng)站建設seo
  • 淘寶做個網(wǎng)站多少錢seo概念
  • 一級a做爰片免費無碼網(wǎng)站網(wǎng)絡流量分析工具
  • php網(wǎng)站開發(fā)百度云產(chǎn)品推廣計劃方案
  • 網(wǎng)站對比app還有優(yōu)勢嗎2023第三波疫情已經(jīng)到來了
  • 網(wǎng)站空間多久續(xù)一次費seo優(yōu)化團隊
  • 鎮(zhèn)江外貿(mào)網(wǎng)站建設站外推廣渠道有哪些
  • Axure只是做網(wǎng)站嗎怎么注冊一個自己的網(wǎng)址
  • 湛江自做網(wǎng)站杭州谷歌推廣
  • 河南科興建設有限公司網(wǎng)站網(wǎng)站推廣公司黃頁
  • 石家莊專業(yè)商城網(wǎng)站制作百度如何優(yōu)化
  • 用身份證備案網(wǎng)站外貿(mào)營銷渠道
  • 天津市建設工程評標專家網(wǎng)站谷歌google官網(wǎng)下載
  • 為什么登錄不上建設銀行網(wǎng)站上海網(wǎng)站建設推廣服務
  • 蒼南龍港做網(wǎng)站店鋪亞馬遜免費的關鍵詞工具
  • 網(wǎng)站建設與網(wǎng)頁制作技術拉新項目官方一手平臺
  • 龍灣做網(wǎng)站歌爾股份砍單
  • 合肥做公司網(wǎng)站公司太原網(wǎng)站推廣排名
  • 美國室內(nèi)設計聯(lián)盟優(yōu)化步驟
  • 捕魚游戲網(wǎng)站制作模板虞城seo代理地址
  • 不用下載就能玩的網(wǎng)頁游戲重慶百度快照優(yōu)化排名
  • 余姚做網(wǎng)站設計的免費網(wǎng)站建設哪個好
  • 深圳正規(guī)網(wǎng)站建設服務人工智能培訓機構哪個好
  • 網(wǎng)站制作怎樣做百度app