導讀 : 1.if語句 2.while語句 一、if語句 if語句是最常用的條件控制語句,Python中的一般形式為: if 條件一: statements elif 條件二: pass # 空語句/占位語句 else: statements Python中用 elif 代替了 else if ,所 ...
導讀 :
1.if語句
2.while語句
3.for語句
4.break和continue
5.pass和else
一、if語句
if語句是最常用的條件控制語句,Python中的一般形式為:
if 條件一:
statements
elif 條件二:
pass # 空語句/占位語句
else:
statements
Python中用 elif 代替了 else if ,所以if語句的關鍵字為:if - elif - else。
註意:
1、每個條件後面要使用冒號(:),表示接下來是滿足條件後要執行的語句塊。
2、使用縮進來劃分語句塊,相同縮進數的語句在一起組成一個語句塊。
3、在Python中沒有switch - case語句。
1. if語句的三種類型
單分支:
if not (a>0 and a<=50):
print("在0到50之外....")
簡單猜數字游戲:
age_of_princal = 56
guess_age = int( input(">>:") )
雙分支:
if guess_age == age_of_princal:
print("yes")
else:
print("no ")
多分支:
if guess_age == age_of_princal:
print("Yes,you got it..")
elif guess_age > age_of_princal:
print("shoud try samller..")
else:
print("try bigger ...")
2. 案例:簡單成績等級判斷
score = int(input("score:"))
if score > 90:
print("A")
elif score > 80:
print("B")
elif score > 70:
print("C")
elif score > 50:
print("D")
else:
print("滾")
3. if嵌套:上火車案例
ticket = 1 #1表示有車票 0表示沒有車票
knifeLenght = 48 #cm
#先判斷是否有車票
if ticket==1:
print("通過了車票的檢測,進入到了車站,接下來要安檢了")
#判斷刀的長度是否合法
if knifeLenght<=10:
print("通過了安檢,進入到了候車廳")
print("馬上就要見到TA了,很開心.....")
else:
print("安檢沒有通過,等待公安處理....")
else:
print("兄弟 你還沒有買票了,先去買票 才能進站....")
4. 猜拳游戲
import random
player = int(input('請輸入:剪刀(0) 石頭(1) 布(2):'))
computer = random.randint(0,2)
# 用來進行測試 #print('player=%d,computer=%d',(player,computer))
if ((player == 0) and (computer == 2)) or ((player ==1) and (computer == 0)) or ((player == 2) and (computer == 1)):
print('獲勝,哈哈,你太厲害了')
elif player == computer:
print('平局,要不再來一局')
else:
print('輸了,不要走,洗洗手接著來,決戰到天亮')
5. 擴展:隨機數的處理
在 Python 中,要使用隨機數,首先需要導入 隨機數 的 模塊 —— “工具包”
import random
導入模塊後,可以直接在 模塊名稱 後面敲一個 . 然後按 Tab 鍵,會提示該模塊中包含的所有函數。
random.randint(a, b) ,返回 [a, b] 之間的整數,包含 a 和 b。
例如:
random.randint(12, 20) # 生成的隨機數n: 12 <= n <= 20
random.randint(20, 20) # 結果永遠是 20
random.randint(20, 10) # 該語句是錯誤的,下限必須小於上限。
二、while迴圈
1. while 語句基本語法:
初始條件設置 —— 通常是重覆執行的 計數器
while 條件(判斷 計數器 是否達到 目標次數):
條件滿足時,做的事情1
條件滿足時,做的事情2
...(省略)...
處理條件(計數器 + 1)
else:
語句
註意冒號和縮進。另外,在Python中沒有do..while迴圈。
幾乎所有的程式語言都選擇從 0 開始計數。因此,大家在編寫程式時,應該儘量養成習慣:除非需求的特殊要求,否則 迴圈 的計數都從 0 開始。
示例:
a, b = 0, 1
while b < 10: # 迴圈輸出斐波納契數列
print(b)
a, b = b, a+b
while迴圈一般通過數值是否滿足來確定迴圈的條件
i = 0 while i<5: print("當前是第%d次執行迴圈"%(i+1)) print("i=%d"%i) i+=1
結果:
當前是第1次執行迴圈
i=0
當前是第2次執行迴圈
i=1
當前是第3次執行迴圈
i=2
當前是第4次執行迴圈
i=3
當前是第5次執行迴圈
i=4
2. while迴圈嵌套
列印如下:
*
* *
* * *
* * * *
* * * * *
第1種方法實現:
# 定義一個計數器變數,從數字1開始,迴圈會比較方便 row = 1 while row <= 5: print("*" * row) row += 1
第2種方法實現:
row = 1 while row <= 5: # 假設 python 沒有提供字元串 * 操作 # 在迴圈內部,再增加一個迴圈,實現每一行的 星星 列印 col = 1 while col <= row: print("*", end="") col += 1 # 每一行星號輸出完成後,再增加一個換行 print("") #等同於print("\n") row += 1
3. 案例
(1)計算1~100的累積和(包含1和100)
i = 1 sum = 0 while i<=100: sum = sum + i i += 1 print("1~100的累積和為:%d"%sum)
(2)計算1~100之間偶數的累積和(包含1和100)
i = 1 sum = 0 while i<=100: if i%2 == 0: sum = sum + i i+=1 print("1~100的累積和為:%d"%sum)
(3)列印九九乘法表
第1種方法:
row = 1 while row <= 9: col = 1 while col <= row: # end = "",表示輸出後,不換行 # "\t" 可以在控制台輸出一個製表符,協助在輸出文本時對齊 print("%d * %d = %d" % (col, row, row * col), end="\t") col += 1 # 一行列印完成的換行 print("") row += 1
第2種方法:
row = 1 while row<=9: col=1 while col<=row: print("%d*%d=%-2d "%(col,row,row*col),end='') col+=1 print('') row+=1
結果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
4. print函數擴展
在預設情況下,print 函數輸出內容之後,會自動在內容末尾增加換行;
如果不希望末尾增加換行,可以在 print 函數輸出內容的後面增加 , end="" 。
其中 "" 中間可以指定 print 函數輸出內容之後,繼續希望顯示的內容 。
語法格式如下:
# 向控制台輸出內容結束之後,不會換行
print("*", end="")
# 單純的換行
print("")
end="" 表示向控制台輸出內容結束之後,不會換行
三、for迴圈
1. for迴圈基本語法
for迴圈一般是對能保存多個數據的變數,進行遍歷。
Python中的for語句與C語言中的for語句有點不同:C語言中的for語句允許用戶自定義迭代步驟和終止條件;而Python的for語句可以遍歷任何序列(sequence),按照元素在序列中的出現順序依次迭代。一般形式為:
for variable in sequence:
statements
else:
statements
示例:
words = ['cat','love','apple','python','friends'] for item in words: print(item, len(item))
如果你需要在迴圈體內修改你正 迭代的序列,你最好是製作一個副本,這時切片標記就非常有用了:
words = ['cat','love','apple','python','friends'] for item in words[:]: # 製作整個列表的切片副本 if len(item) >= 6: words.insert(0, item) print(words)
我們註意到迴圈語句中還可以使用 else子句 ,下麵有講到。
demo1:
name = 'dongGe' for x in name: print(x)
結果:
d
o
n
g
G
e
demo2:
name = '' for x in name: print(x) else: print("沒有數據")
結果:
沒有數據
2. 應用場景
在 迭代遍歷 嵌套的數據類型時,例如 一個列表包含了多個字典。(關於字典之後會講到)
需求:要判斷 某一個字典中 是否存在 指定的 值:
如果 存在,提示並且退出迴圈;
如果 不存在,在 迴圈整體結束 後,希望 得到一個統一的提示.
students = [ {"name": "阿土", "age": 20, "gender": True, "height": 1.7, "weight": 75.0}, {"name": "小美", "age": 19, "gender": False, "height": 1.6, "weight": 45.0}, ] find_name = "阿土" for stu_dict in students: print(stu_dict) # 判斷當前遍歷的字典中姓名是否為find_name if stu_dict["name"] == find_name: print("找到了") # 如果已經找到,直接退出迴圈,就不需要再對後續的數據進行比較 break else: print("沒有找到") print("迴圈結束")
輸出結果:
{'gender': True, 'weight': 75.0, 'name': '阿土', 'height': 1.7, 'age': 20}
finded
finish
3. 擴展:range函數
如果你要遍歷一個數字序列,那麼內置的range()函數就可以派上用場了。函數range()常用於for迴圈中,用於產生一個算術數列:
>>> list(range(10)) # 預設從0開始 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(1, 11)) # 從1到11, 前閉後開 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> list(range(0, 30, 5)) # 5表示步長, 每隔5取一個數 [0, 5, 10, 15, 20, 25]
示例:(試一下以下代碼的運行結果)
for i in range(2, 11): print(i)
四、break和continue
break 某一條件滿足時,退出迴圈,不再執行後續重覆的代碼。
continue 某一條件滿足時,不執行後續重覆的代碼 。
break/continue只能用在迴圈中, 除此以外不能單獨使用。
break/continue在嵌套迴圈中, 只對最近的一層迴圈起作用,即只對 當前所在迴圈 有效。
break的作用:
用來結束整個迴圈。
帶有break的迴圈示例如下:
i = 0 while i<5: i = i+1 print('----') if i==3: break print(i) else: print("==while迴圈過程中,如果沒有執行break退出,則執行本語句==")
運行結果:
----
1
----
2
----
for in 遍歷示例如下:
name = 'salmond' for x in name: print('----') if x == 'm': break print(x) else: print("==for迴圈過程中,如果沒有執行break退出,則執行本語句==")
運行結果:
----
s
----
a
----
l
----
continue的作用:
用來結束本次迴圈,緊接著執行下一次的迴圈。
帶有continue的迴圈示例如下:
i = 0 while i<5: i = i+1 print('----') if i==3: continue print(i)
運行結果:
----
1
----
2
----
----
4
----
5
for in 遍歷示例如下:
name = 'salmond' for x in name: print('----') if x == 'm': continue print(x) else: print("==while迴圈過程中,如果沒有break則執行==")
試著預想以下上面代碼的執行效果,然後實際運行以下。
五、pass和else子句
pass
pass語句什麼都不做,它只在語法上需要一條語句但程式不需要任何操作時使用。pass語句是為了保持程式結構的完整性。
else子句
在迴圈語句中還可以使用 else子句 ,else子句在序列遍歷結束(for語句)或迴圈條件為假(while語句)時執行,但迴圈被break終止時不執行:
# 迴圈結束執行else子句
for i in range(2, 11): print(i) else: print('for statement is over.')
# 被break終止時不會執行else子句
for i in range(5): if(i == 4): break; else: print(i) else: print('for statement is over') # 不會輸出
六、練習題:語句
1. 使用if,編寫程式,實現以下功能:
_ 從鍵盤獲取用戶名、密碼
_ 如果用戶名和密碼都正確(預先設定一個用戶名和密碼),那麼就顯示“歡迎進入xxx的世界”,否則提示密碼或者用戶名錯誤
2.BMI 計算
輸入一個人的身高(m)和體重(kg),根據BMI公式(體重除以身高的平方)計算他的BMI指數。
* 例如:一個52公斤的人,身高是155cm,則BMI為 :`52(kg)/1.55^2(m)= 21.6`
* BMI指數:
```
低於18.5:過輕
18.5-25:正常
25-28:過重
28-32:肥胖
高於32:嚴重肥胖
```
3.個人所得稅
編寫一個程式計算個人所得稅(以下為個人所得稅稅率表,3500元起徵):
```
應納稅所得額(含稅) 稅率(%)
不超過1500元的 3
超過1500元至4,500元的部分 10
超過4,500元至9,000元的部分 20
超過9,000元至35,000元的部分 25
超過35,000元至55,000元的部分 30
超過55,000元至80,000元的部分 35
超過80,000元的部分 45
```
寫給小白的Python之004:數據類型之字元串練習題答案
現有字元串num_str = "0123456789",請分別對num_str按下列要求操作:
# 1. 截取從 2 ~ 5 位置 的字元串 print(num_str[2:6]) # 2. 截取從 2 ~ `末尾` 的字元串 print(num_str[2:]) # 3. 截取從 `開始` ~ 5 位置 的字元串 print(num_str[:6]) # 4. 截取完整的字元串 print(num_str[:]) # 5. 從開始位置,每隔一個字元截取字元串 print(num_str[::2]) # 6. 從索引 1 開始,每隔一個取一個 print(num_str[1::2]) # 倒序切片 # -1 表示倒數第一個字元 print(num_str[-1]) # 7. 截取從 2 ~ `末尾 - 1` 的字元串 print(num_str[2:-1]) # 8. 截取字元串末尾兩個字元 print(num_str[-2:]) # 9. 字元串的逆序 print(num_str[::-1]) # print(aStr[-1::-1])