寫在前面的話
在寫代碼的時候,我們的代碼不可能總是一行一行語句的堆疊,有些時候我們需要對一個事物進行判斷,或者很大一組資料需要循環挨個處理。這些不可能讓我們一步一步的去寫。是以有了接下來的分支結構和循環結構。
分支結構
文法格式:
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)
結果:

三元運算符
三元運算符其實際就是将簡單的 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)
2. 求 0 - 100 的偶數和:
sum = 0
for num in range(0, 101, 2):
sum += num
print("0 - 100 的偶數和為:%d" % sum)
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)
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("")
這裡有個知識點,print 結束預設的符号是換行,我們可以使用 end= 指定結尾的符号。
break 和 continue
這兩者都用于循環中,但是兩者有着明顯的差别:
break,直接結束目前層級的循環,不管你執行到那裡。
continue,結束本輪循環,進入下一輪。
看個示例:
for i in (1, 2, 3, 4, 5):
if i == 2:
continue
if i == 4:
break
print(i)
結果如圖:
可以明顯看到,當 i == 2 的時候,這一輪循環被跳過了,是以沒有列印 i 的值,當 i == 4 的時候,整個循環都被結束了,是以後面的都不再列印。
enumerate
枚舉,對一個可疊代對象将其組成索引加資料的序列。
L = ['a', 'b', 'c']
for i in enumerate(L, 1):
print(i)
小結
本節其實主要是邏輯處理語句,包括判斷,循環等。其中包括了兩個内置函數:range 和 random。
如果真的隻講幾種文法,很簡單,結合執行個體查漏補缺。