天天看點

【03】Python:分支和循環

寫在前面的話

在寫代碼的時候,我們的代碼不可能總是一行一行語句的堆疊,有些時候我們需要對一個事物進行判斷,或者很大一組資料需要循環挨個處理。這些不可能讓我們一步一步的去寫。是以有了接下來的分支結構和循環結構。

分支結構

文法格式:

if 條件1:
    執行1
elif 條件2:
    執行2
else:
    執行3      

示例:

x = 3
y = 2

if x == 1:
    print("這是第一種情況")
elif x == 2:
    print("這是第二種情況")
else:
    if y == 1:
        print("這是第三種情況")
    else:
        print("這是第四種情況")      

當然,elif 和 else 語句都不是必須,在面對複雜的需求的時候,我們也能進行嵌套。

執行個體:

1. 判斷成績等級,90 以上 A,80 - 89 為 B,70 - 79 為 C,60 - 69 為 D,60 以下為 E。

# 輸入成績
score = float(input("請輸入成績:"))

# 判斷成績
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:
    grade = "E"

print("成績為:%s" % grade)      

結果:

【03】Python:分支和循環

三元運算符

三元運算符其實際就是将簡單的 if 寫成一個語句,如:

x = 3

if x == 1:
    y = 1
else:
    y = 0      

我們可以使用三元運算符表示:

x = 3
y = 1 if x == 1 else 0      

當然我們還可以寫更複雜的邏輯,但是不推薦,因為我們寫代碼有個前提,那就是便于閱讀,越簡單易讀越好。

循環結構

在循環結構中,主要有兩種,一種是 while,一種是 for in,兩種循環如果要說差別,可能更多的是使用場景的差別,

for in,一般對一個類似數組這樣的集合進行一個一個疊代循環。

while,一般用于某種特殊的循環,帶有判斷的意味,我們可以了解為 當 xxx 的時候怎麼樣。

# for 循環
for i in 可疊代對象:
    執行
    
# while 循環
while 條件:
    執行      

1. 輸出所有水仙花數:三位數,個位的三次方 + 十位的三次方 + 百位的三次方 = 數字本身

注意:我們這裡會用到生成連續數字的内置函數 range。

range(101):生成 0 - 100 的數組。

range(100, 1000) :則會生成 100 - 999 的數組。

range(1, 101, 2):擷取 0 - 100 之間的奇數,2 代表跨度。

for num in range(100, 1000):
    if ((num // 100) ** 3 + ((num % 100) // 10) ** 3 + (num % 10) ** 3) == num:
        print(num)      
【03】Python:分支和循環

2. 求 0 - 100 的偶數和:

sum = 0

for num in range(0, 101, 2):
    sum += num
print("0 - 100 的偶數和為:%d" % sum)      
【03】Python:分支和循環

3. 猜數字遊戲:使用者有 3 次機會,猜 1 - 10 的随機數。猜錯會有範圍提示。

注意:這裡會用到一個内置函數 random,生成随機數。

import random

# 使用者次數
times = 3
# 生成随機數
random_num = random.randint(1, 10)

# 判斷
while times:
    user_num = int(input("請輸入你的猜想:"))
    if user_num > random_num:
        print("你猜大了")
    elif user_num < random_num:
        print("你猜小了")
    else:
        print("你猜對了")
        break
    times -= 1
    print("你還有 %s 次機會!" % times)      
【03】Python:分支和循環

4. 列印 99 乘法表:

for x in range(1, 10):
    for y in range(x, 10):
        print("%sx%s=%s" % (x, y, x*y), end="\t")
    print("")      
【03】Python:分支和循環

這裡有個知識點,print 結束預設的符号是換行,我們可以使用 end= 指定結尾的符号。

break 和 continue

這兩者都用于循環中,但是兩者有着明顯的差别:

break,直接結束目前層級的循環,不管你執行到那裡。

continue,結束本輪循環,進入下一輪。

看個示例:

for i in (1, 2, 3, 4, 5):
    if i == 2:
        continue
    if i == 4:
        break
    print(i)      

結果如圖:

【03】Python:分支和循環

可以明顯看到,當 i == 2 的時候,這一輪循環被跳過了,是以沒有列印 i 的值,當 i == 4 的時候,整個循環都被結束了,是以後面的都不再列印。

enumerate

枚舉,對一個可疊代對象将其組成索引加資料的序列。

L = ['a', 'b', 'c']

for i in enumerate(L, 1):
    print(i)      
【03】Python:分支和循環

小結 

本節其實主要是邏輯處理語句,包括判斷,循環等。其中包括了兩個内置函數:range 和 random。

如果真的隻講幾種文法,很簡單,結合執行個體查漏補缺。