1. 程式人生 > 其它 >Python入門-分支結構

Python入門-分支結構

編寫程式碼的過程中,除了基本的變數,資料型別,在實際開發中,大量程式碼是根據判斷條件,進而選擇不同的的向前執行方式。

這些向前的執行方式基本分為兩種:分支結構,迴圈結構

1.分支結構

if單分支結構

# if單分支結構,程式碼格式如下:
if <條件>:
    <語句塊>

# 使用多個if判斷,只要滿足條件會一直執行下去
name = "tom"
age = 22
if age >18:
print("你已經長大了")
if name == "tom":
print("你是tom")
"""
你已經長大了
你是tom
"""

# 使用if做多條件判斷,儘量只做是否的判斷,減少邏輯錯誤
age = 22 if age < 18: print("你還是個孩子") if age > 18: print("你已經長大了") """ 你已經長大了 """

if-else雙分支結構

#多分支可以實現更多判斷, 對比if單分支判斷,雙分支邏輯更為清晰。只需要判斷一個條件,根據這個條件來決定執行的語句塊,成立執行語句塊1,不成立執行語句塊2。

#
程式碼格式如下 if <條件>: <語句塊1> else: <語句塊2> age = 22 if age <18: print("
你還是未成年人") else: print("你已經長大了") """ 你已經長大了 """

if-elif-else多分支結構

# 多分支結構是,根據不同條件來選擇語句塊執行的一種分支結構

#程式碼格式如下:
if <條件1>:
    <語句塊1>
elif <條件2>:
    <語句塊2>
......
else:
    <語句塊n>

#多分支結構需要判斷多個條件,根據判斷當前條件是否成立,決定是否執行當前語句塊
"""
1.當滿足當前條件時,執行當前條件後結束程式碼
2.當前條件不滿足時,進行下一條判斷,如果下一條條件依然不滿足,依次往下執行判斷
3.當所有條件都不成立時,執行else的語句塊。
""" # 成績分數判斷程式碼演示 num = 77 if num == 100: print("恭喜你獲得滿分") elif 80 < num <100: print("這是優秀成績") elif 60 < num <80: print("恭喜你及格了,繼續努力") else: print("成績沒及格哦,要加油咯") # 簡單的猜數字遊戲 input_num = input("1-10得範圍,請輸入你猜的數字:") #第一:判斷是否輸入的是數字 if input_num.isdigit(): res_num = int(input_num) # 把輸入的字串轉換為數字 #eval_num = eval(input("請輸入數字:")) 此方法也可以轉換為整型 # 第二:判斷數字是否在輸入範圍內 if res_num <10: #第三:當數字在範圍內,進行邏輯判斷 if res_num > 5: print("數字大了") elif res_num < 5: print("數字小了") else: print("恭喜你,猜對了") else: print("你輸入的數字太大了,只能1-10範圍內") else: print("你輸入的不是數字呀")
小提示: 當判斷結構過於複雜時,可以先寫簡單的外層判斷,外層寫完了再繼續內部判斷
小提示: 在分支結構中,優先把可能遇到的判斷情況,寫在程式碼前面,可以節省效能。

2.迴圈結構

迴圈結構用於,在特定條件下,重複執行一些程式塊。

從上面的分支結構,我們已經看到了如何用縮排來表示程式塊的隸屬關係,迴圈結構也會用到類似的寫法。

while迴圈

# 程式碼演示:100以內數字求和
num = 1
sum_num = 0
while num <= 100:
    sum_num += num   # 累加求和
    num += 1     # 修改迴圈結束條件
print(sum_num)

# 注意:防止結束條件錯誤,導致死迴圈

while-else迴圈

num = 1
sum_num = 0
while num <= 100:
    sum_num += num
    num += 1
else:
    print(sum_num)
print("程式碼結束了。")   
# while迴圈的使用-斐波那契數列
a = 0
b = 1
while a < 1000:    # 迴圈結束條件
    print(a, end = ",")
    a, b = b, a + b  # 利用變數的賦值操作,進行累加
#結果:0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987

for迴圈

# for迴圈需要預先設定好迴圈的次數(n),然後執行隸屬於for的語句n次。

#程式碼結構:
for 元素 in 序列: 
    statement

# 程式碼演示
for i in [1,2,3]:
    print(i)
"""
1
2
3
"""

# 為了解決迴圈次數的問題,常使用range()函式,
range(開始,結束),結束位置取不到,只能取到【結束-1】的值。
for i in range(10):
    print(i)
"""
0
1
2
3
4
5
6
7
8
9
"""

# 100以內的數字相加求和
s = 0
for i in range(101): # 因為取不到101,只能取到100
    s += i
print("計算結果為:",s)
# 計算結果為: 5050

3.迴圈控制語句

迴圈過程中,語句如果臨時需要中斷,跳過等操作,就需要迴圈控制語句

break停止迴圈

# 找到5,就停止迴圈, for迴圈演示
for i in range(10):
    print(i, end = ",")
    if i == 5:
        break
"""
0,1,2,3,4,5,
"""

# 找到5,就停止迴圈,while迴圈演示
a = 1
while a < 10:
    print(a, end = "-") 
    if a == 5: 
        break 
    a += 1 
""" 
1-2-3-4-5-
"""

continue跳過本次迴圈

# 找到5,就跳過本次迴圈, for迴圈演示
for i in range(10):
    if i == 5:
        continue
    print(i, end = ",")

"""
結果中沒有5,其他都有:0,1,2,3,4,6,7,8,9,
"""
# 找到5,就跳過本次迴圈,while迴圈演示
a = 0
while a < 10:
    a += 1
    if a == 5:
        continue
    print(a, end ="-")  
"""
結果中沒有5,其他都有:1-2-3-4-6-7-8-9-10-
"""

4.巢狀迴圈

# 列印九九乘法表
# 乘法表規律為:列X行=結果,一共9行,行列相等。

for i in range(1, 10):       # 定義九行
    for j in range(1, i+1):  #定義列數
        print("{}*{}={}".format(j, i, j*i), end=" ")  #輸出結果
    print()  # 每列結束後,換行
"""
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 
"""

# 輸出三角形的程式碼演示
# 規律:隨著行數的增加,空格減少,星號增加
line = 7
for i in range(0, line):
    for x in range(line -i):   # 空格減少
        print("", end = " ")
    for y in range(0, i + 1):  # 星號增加
        print("*", end = " ")
    print()
"""
       * 
      * * 
     * * * 
    * * * * 
   * * * * * 
  * * * * * * 
 * * * * * * * 
"""