Python 程序設計入門(020)—— 循環結構程序設計(1):for 循環
目錄
- Python 程序設計入門(020)—— 循環結構程序設計(1):for 循環
- 一、for 循環的語法
- 二、for 循環中使用 range() 函數
- 三、for … else 語句
- 四、for 表達式
一、for 循環的語法
for 循環是一個計次循環,適用于枚舉或遍歷序列和迭代對象中的元素,一般應用于循環次數已知的情況下。for 循環的語法格式如下:
for 迭代變量 in 對象:循環體
說明:
(1)迭代變量:用于保存讀取出的值。
(2)對象:要遍歷或迭代的對象,可以是任何有序的序列對象,比如:字符串、列表、元組等。
(3)循環體:一組需要重復執行的語句。
(4)Python 采用代碼縮進和冒號(:)區分代碼層次。for 循環表達式行尾的冒號和下一行的縮進(通常采用 4 個空格作為一個縮進量)表示一個代碼塊的開始,縮進結束則表示一個代碼塊的結束。使用 for 循環時,必須嚴格按照縮進規則編寫代碼。
例如:
(1)提取出字符串中的數字、字母、英文符號與其他字符。
str1 = "ds3,3jH.iee/我fj*32的&號30U,碼河。……H54南"
digit = ""
letter = ""
pun = ""
other = ""
for item in str1:if ord(item) in range(48,58): # 數字的ASCII碼為48-57digit += itemelif ord(item) in range(65,91) or ord(item) in range(97,123): # 大寫字母的ASCII碼為65-90,小寫字母的ASCII碼為97-122letter += itemelif ord(item) < 128: # 去除數字和字母pun += itemelse: # 其他字符(ASCII碼大于127)other += item
print("數字為:",digit)
print("字母為:",letter)
print("英文字符為:",pun)
print("其他字符:",other)程序的運行結果為:
===================== RESTART: C:\Python\Python38\First.py =====================
數字為: 33323054
字母為: dsjHieefjUH
英文字符為: ,./*&
其他字符: 我的號,碼河。……南
(2)遍歷列表數據
list1 = ["Tom","Jerry","Kate","Black"]
for item in list1:print(item)
print("="*30)
for item in range(len(list1)):print(list1[item])程序的運行結果為:
===================== RESTART: C:\Python\Python38\First.py =====================
Tom
Jerry
Kate
Black
==============================
Tom
Jerry
Kate
Black
(3)遍歷元組數據
tuple1 = (["Tom",20],["Jerry",22],["Kate",18],["Black",19])
for item in tuple1:print("Name:",item[0],"\tAge:",item[1])
print("="*30)
for item in tuple1:print("姓名:{}\t年齡:{}".format(item[0],item[1]))
print("="*30)
for item in tuple1:for i in item:print(i,end="\t")print()程序的運行結果為:
===================== RESTART: C:\Python\Python38\First.py =====================
Name: Tom Age: 20
Name: Jerry Age: 22
Name: Kate Age: 18
Name: Black Age: 19
==============================
姓名:Tom 年齡:20
姓名:Jerry 年齡:22
姓名:Kate 年齡:18
姓名:Black 年齡:19
==============================
Tom 20
Jerry 22
Kate 18
Black 19
(4)遍歷字典數據
dict1 = {"Tom":20,"Jerry":22,"Kate":18,"Black":19}
for key in dict1.keys():print("Name:{}\tAge:{}".format(key,dict1.get(key)))
print("="*30)
for item in dict1.items():print("Name:{}\tAge:{}".format(item[0],item[1]))程序的運行結果為:
===================== RESTART: C:\Python\Python38\First.py =====================
Name:Tom Age:20
Name:Jerry Age:22
Name:Kate Age:18
Name:Black Age:19
==============================
Name:Tom Age:20
Name:Jerry Age:22
Name:Kate Age:18
Name:Black Age:19
二、for 循環中使用 range() 函數
for 循環通過迭代變量遍歷對象中的每個元素。通過索引遍歷對象時,經常使用 range() 函數,以生成一系列連續的整數。range() 函數的格式如下:
range([start,] end[, step])
說明:
(1)start:指定計數的起始值。如果省略,則從0開始計數。
(2)end:指定計數的結束值,該參數不能省略,當函數中只有一個參數時即表示技術的結束值。生成的序列不包括結束值。比如 range(5),生成的序列為[0-4],range(1,11),生成的序列為[1-10]。
(3)step:指定步長,即兩個數之間的間隔,如果省略則步長為1。
(4)在使用 range() 函數時,如果只有一個參數,則指定的是end;如果有兩個參數,則指定的是start和end;指定三個參數時,第一個參數為start,第二個參數為end,第三個參數為step。
例如:
(1)遍歷列表元素
list1 = ["Tom","Jerry","Kate","Black"]
for i in list1:print("{}".format(i),end="\t")
print()
print("="*30)
for i in range(len(list1)):print("{}".format(list1[i]),end="\t")程序的運行結果為:
===================== RESTART: C:\Python\Python38\First.py =====================
Tom Jerry Kate Black
==============================
Tom Jerry Kate Black
(2)計算 5!(1*2*3*4*5)
f = 1
for i in range(1,6):f *= i
print("5!結果為:",f)程序的運行結果為:
===================== RESTART: C:\Python\Python38\First.py =====================
5!結果為: 120
(3)計算 1-100 中所有奇數的和
sum1 = 0
for i in range(1,101,2):sum1 += i
print("1-100的和:",sum1)程序的運行結果為:
===================== RESTART: C:\Python\Python38\First.py =====================
1-100的和: 2500
三、for … else 語句
for 循環可以添加一個 else 分支語句。只有當 for 循環語句正常執行后,才會執行 else 語句。如果 for 循環語句中遇到 break 或 exit(0) 語句,同時又符合跳出的條件,則不會執行 else 語句。for … else 語句的語法格式如下:
for <迭代變量> in <遍歷結構>:語句塊1
else:語句塊2
說明:else 后面的語句會在 for 循環執行完成的情況下執行。
例如:
(1)else 語句被執行
代碼如下:
num = 97
for i in range(2,int(num**0.5) + 1):if num % i == 0:break
else:print("{}是一個素數。".format(num))程序的運行結果為:
===================== RESTART: C:\Python\Python38\First.py =====================
97是一個素數。
(2)else 語句沒有被執行
num = 95
for i in range(2,int(num**0.5) + 1):if num % i == 0:print("{}不是一個素數。".format(num))break
else:print("{}是一個素數。".format(num))程序的運行結果為:
===================== RESTART: C:\Python\Python38\First.py =====================
95不是一個素數。
四、for 表達式
for 表達式可以利用迭代對象創建新的序列,for 表達式也稱為序列遞推式。語法格式如下:
[表達式 for 迭代變量 in 可迭代對象 [if 條件表達式] ]
例如:
(1)求 2-100 之間的素數
list1 = [2]
for i in range(3,101):if 0 not in [i%j for j in range(2,int(i**0.5) + 1)]:list1.append(i)
print(list1)程序的運行結果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
(2)處理列表數據
list1 = ["Tom","Jerry","Kate","Black"]
list2 = ["Name:" + item for item in list1]
print(list2)程序的運行結果為:
===================== RESTART: C:\Python\Python38\First.py =====================
['Name:Tom', 'Name:Jerry', 'Name:Kate', 'Name:Black']
(3)使用 zip() 函數組合多個列表
list1 = ["Tom","Jerry","Kate","Black"]
list2 = [21,20,18,19]
list3 = [name + ":" + str(age) for name,age in zip(list1,list2)]
print(list3)程序的運行結果為:
===================== RESTART: C:\Python\Python38\First.py =====================
['Tom:21', 'Jerry:20', 'Kate:18', 'Black:19']
(4)for 表達式中使用條件
list1=[x ** 2 for x in range(1,10) if x % 2 == 0] # 返回1-9之間偶數的平方組成的列表
num = [2*x if x>=2 and x<=5 else x**2 for x in range(1,11)] # 如果x的值介于2和5之間返回 2*x,否則返回 x**2
print(list1)
print(num)程序的運行結果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[4, 16, 36, 64]
[1, 4, 6, 8, 10, 36, 49, 64, 81, 100]