3、流程控制語句
阿新 • • 發佈:2022-03-23
目錄
1、if 語句
基本語法:
if <條件判斷1>:
<執行1>
elif <條件判斷2>:
<執行2>
elif <條件判斷3>:
<執行3>
else:
<執行4>
- Python 中用
elif
代替了else if
,所以if語句的關鍵字為:if—elif—else
- 每個條件後面要使用冒號
:
,表示接下來是滿足條件後要執行的語句塊 - 使用縮排來劃分語句塊,相同縮排數的語句在一起組成一個語句塊
- 在Python中沒有
switch—case
語句
例1:小明身高1.75,體重80.5kg。請根據BMI公式(體重除以身高的平方)幫小明計算他的BMI指數,並根據BMI指數:
區間 | 評價 |
---|---|
低於18.5 | 過輕 |
18.5-25 | 正常 |
25-28 | 過重 |
28-32 | 肥胖 |
高於32 | 嚴重肥胖 |
In: height=1.75 weight=80.5 BMI=round(weight/(height**2),2) print("BMI為:",BMI) Out: BMI為: 26.29 In: if BMI<18.5: print("過輕") elif 18.5<=BMI<25: print("正常") elif 25<=BMI<28: print("過重") elif 28<=BMI<32: print("肥胖") else: print("嚴重肥胖") Out: 過重
例2:分析下面的例子為何會出錯
In: birth = input('birth: ') if birth < 2000: print('00前') else: print('00後') Out: birth: 1999 --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-3-786392a83547> in <module> 1 birth = input('birth: ') ----> 2 if birth < 2000: 3 print('00前') 4 else: 5 print('00後') TypeError: '<' not supported between instances of 'str' and 'int'
分析:
因為input()
返回的資料型別是str
,str
不能直接和整數比較,必須先把str
轉換成整數。Python提供了int()
函式來完成這件事情:
In: birth = int(input('birth: '))
if birth < 2000:
print('00前')
else:
print('00後')
Out: birth: 1999
00前
例3: if
巢狀判斷是否能被2跟3整除
In: num=int(input("輸入一個數字:"))
if num%2==0: # num除以2的餘數等於0
if num%3==0: # num除以3的餘數等於0
print ("你輸入的數字可以整除 2 和 3")
else:
print ("你輸入的數字可以整除 2,但不能整除 3")
else:
if num%3==0:
print ("你輸入的數字可以整除 3,但不能整除 2")
else:
print ("你輸入的數字不能整除 2 和 3")
Out: 輸入一個數字:9
你輸入的數字可以整除 3,但不能整除 2
2、While 語句
基本語法
- 條件內迴圈執行語句,不滿足條件則退出
while 判斷條件:
語句
- 條件內迴圈執行語句1,不滿足條件則執行語句2
while 判斷條件:
語句1
else:
語句2
- 需要注意冒號和縮排。另外,在 Python 中沒有
do..while
迴圈。
# 計算 1 到 100 的總和
num=1
sum=0
while num<=100: #條件內迴圈,不滿足條件則退出
sum=sum+num
num=num+1
print(sum)
# 5050
無限迴圈
var = 1
while var == 1 : # 表示式永遠為 true,可以使用 CTRL+C 來退出當前的無限迴圈
num = int(input("輸入一個數字 :"))
print ("你輸入的數字是: ", num)
3、For 語句
基本語法
for 變數 in 序列:
語句1
else:
語句2
In: a=['c','c++','python','mysql']
for x in a:
print(x)
else:
print('迴圈結束')
Out: c
c++
python
mysql
迴圈結束
4、break 語句
break 語句用於跳出當前迴圈體
In: lan=['c','c++','python','mysql']
for x in a:
if x=='python':
print("python,正好跳出")
break
print("看看有沒有跳出") # break已跳出,故此句不會打印出來
else:
print(x)
else:
print("完成迴圈")
Out: c
c++
python,正好跳出
5、range()函式
range()
函式,用於遍歷數字序列
In: for i in range(5): #從0開始(含0),截止到5(不含5)
print(i)
Out: 0
1
2
3
4
In: for i in range(5,9): #從5開始(含5),截止到9(不含9)
print(i)
Out: 5
6
7
8
In: for i in range(0, 10, 3): # 從0(含)到10(不含),步長為3
print(i)
Out: 0
3
6
9
In: for i in range(-10, -100, -30): # 從-10(含)到-100(不含),步長為-30
print(i)
Out: -10
-40
-70
In: a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
for i in range(len(a)): # i=range(4)
print(i, a[i])
Out: 0 Google
1 Baidu
2 Runoob
3 Taobao
4 QQ
In: # 使用range()函式來建立一個列表:
a=list(range(5))
print(a)
Out: [0, 1, 2, 3, 4]
6、continue語句
-
break
語句可以在迴圈過程中直接退出迴圈, -
continue
語句可以提前結束本輪迴圈,並直接開始下一輪迴圈。 - 這兩個語句通常都必須配合if語句使用。
要特別注意,不要濫用
break
和continue
語句。break
和continue
會造成程式碼執行邏輯分叉過多,容易出錯。大多數迴圈並不需要用到break
和continue
語句。
如:打印出1~10的奇數
In: n=0
while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶數,執行continue語句
continue # continue語句會直接繼續下一輪迴圈,後續的print()語句不會執行
print(n)
Out: 1
3
5
7
9
7、pass 語句
- pass是空語句,是為了保持程式結構的完整性。
- pass 不做任何事情,一般用做佔位語句,如下例項
while True:
pass # 等待鍵盤中斷 (Ctrl+C)