11.python for循環
- 2020 年 3 月 12 日
- 筆記
11.python for循環
最後更新於:2019-09-25 10:12:11
在python開發中,除了前篇文章介紹的while循環還有一個for循環也經常使用,兩者使用都是大同小異,for循環的使用相對於while循環更加靈活,下面我們一起來了解下具體區別。
一.for 循環語法
Python
for 變數 in 序列: 執行語句……
12 |
for 變數 in 序列: 執行語句…… |
---|
可能目前大家對序列還比較陌生,序列可以是數字區間,比如0~100;也可以是字元串;也可以是列表/字典/元祖(後面在講解這三個),先看一個簡單例子:
Python
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解憂 @Blog(個人部落格地址): shuopython.com @WeChat Official Account(微信公眾號):猿說python @Github:www.github.com @File:for循環.py @Time:2019/9/19 21:22 @Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累! """ for a in range(0, 5): # 表示 a 的初始值為 0 並且小於5,a取值重0開始依次遞增: 0 1 2 3 4 print(a) print("循環結束,退出程式")
123456789101112131415161718 |
# !usr/bin/env python# -*- coding:utf-8 _*-"""@Author:何以解憂@Blog(個人部落格地址): shuopython.com@WeChat Official Account(微信公眾號):猿說python@Github:www.github.com @File:for循環.py@Time:2019/9/19 21:22 @Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!""" for a in range(0, 5): # 表示 a 的初始值為 0 並且小於5,a取值重0開始依次遞增: 0 1 2 3 4 print(a) print("循環結束,退出程式") |
---|
輸出結果:
0 1 2 3 4 循環結束,退出程式
123456 |
01234循環結束,退出程式 |
---|
range()函數 也是python 中的內置函數,range(x,y)意思就是重x到y-1之間的整數不包括y.
range(5,10) 表示:5 6 7 8 9 range(0,10) 表示:0 1 2 3 4 5 6 7 8 9
12 |
range(5,10) 表示:5 6 7 8 9range(0,10) 表示:0 1 2 3 4 5 6 7 8 9 |
---|
對於上面程式碼我們同樣用while循環也來實現以下:
Python
a = 0 while a < 5: print(a) a += 1 print("循環結束,退出程式")
12345 |
a = 0while a < 5: print(a) a += 1print("循環結束,退出程式") |
---|
由此可見,while循環和for循環實現相同的功能,for循環比while 循環使用更加靈活,具體分析下for循環中的參數:
for i in range(n,m):
1 |
for i in range(n,m): |
---|
i:變數名,命名為a、b、c都可以,無所謂
n:變數 i的值默認重n開始,i = n
m:循環過程中,默認i值偏移步長加1,直到 i 值>= m,循環停止,注意 :i 的最大值等於 m-1

二.實戰練習
# 遍歷字元串,依次輸出字元串中的每一個字元 for a in "python教程 – 猿說python": # a 重字元串的第一個字母開始,直到遍歷字元串結尾 print(a) print("*"*20) # 小竅門:連續輸出 20 個 * # 遍歷0~100之間的數字,但是不包括100 ,默認 a 重 0 開始依次遞增直到 99 結束 for a in range(0,100): if a % 2 == 0: # 判斷奇偶,如果是偶數直接跳過本次循環,繼續下一次循環 continue elif a > 5: # 如果是奇數並且a的值大於 5 a *= 10 else: # 如果是奇數並且a的值小於5 a += 20 if a > 30: # 如果a的值大於30 直接跳出循環 break print(a) print("循環結束,退出程式")
123456789101112131415161718192021 |
# 遍歷字元串,依次輸出字元串中的每一個字元for a in "python教程 – 猿說python": # a 重字元串的第一個字母開始,直到遍歷字元串結尾 print(a) print("*"*20) # 小竅門:連續輸出 20 個 * # 遍歷0~100之間的數字,但是不包括100 ,默認 a 重 0 開始依次遞增直到 99 結束for a in range(0,100): if a % 2 == 0: # 判斷奇偶,如果是偶數直接跳過本次循環,繼續下一次循環 continue elif a > 5: # 如果是奇數並且a的值大於 5 a *= 10 else: # 如果是奇數並且a的值小於5 a += 20 if a > 30: # 如果a的值大於30 直接跳出循環 break print(a) print("循環結束,退出程式") |
---|
輸出結果:
Python
p y t h o n 教 程 – 猿 說 p y t h o n ******************** 21 23 25 循環結束,退出程式
123456789101112131415161718192021222324 |
python教程 – 猿說python********************212325循環結束,退出程式 |
---|
程式碼分析:
以上程式碼綜合了前面學習的條件表達式if/else 以及 continue/break使用。for循環過程中,變數a值默認偏移依次遞增+1,如果希望for循環能實現偏移遞減或者遞增+2或者遞減-2呢?
要實現在for循環中偏移遞增+2或者遞減-2,需要再加一個參數在for循環中,語法如下:
Python
for i in range(n,m,k):
1 |
for i in range(n,m,k): |
---|
i:變數名,命名為a、b、c都可以,無所謂
n:變數 i的值默認重n開始,i = n
k:變數 k的值如果不設置,默認偏移步長為1;設置k 值就意味 偏移步長等於 k (k可以是整數或者浮點數)
m:循環過程中,i的值默認偏移步長依次遞增k,如果沒有設置k值,默認k = 1, 直到 i >= m,循環停止,注意 :i 的最大值等於 m-1

程式碼如下:
Python
for i in range(0, 10, 2): # 默認 i 值重0開始,偏移步長依次遞增+2並且小於10 print(i, end=" ") # print 函數默認會換行,強制設置" "(空格)代替"n"(換行) print("n") # 換行 print("**"*20) for i in range(0, -10, -2): # 默認 i 值重0開始,偏移步長依次遞減-2並且大於-10 print(i, end=" ") # print 函數默認會換行,強制設置" "(空格)代替"n"(換行) print("n")# 換行 print("**"*20) str1 = "猿說python" print("len(str1):%d " % len(str1)) for i in range(0,len(str1),2): # 默認 i 值重0開始,偏移步長依次遞增+2並且小於len(str1) print(str1[i])
123456789101112131415 |
for i in range(0, 10, 2): # 默認 i 值重0開始,偏移步長依次遞增+2並且小於10 print(i, end=" ") # print 函數默認會換行,強制設置" "(空格)代替"n"(換行) print("n") # 換行print("**"*20)for i in range(0, -10, -2): # 默認 i 值重0開始,偏移步長依次遞減-2並且大於-10 print(i, end=" ") # print 函數默認會換行,強制設置" "(空格)代替"n"(換行) print("n")# 換行print("**"*20) str1 = "猿說python"print("len(str1):%d " % len(str1))for i in range(0,len(str1),2): # 默認 i 值重0開始,偏移步長依次遞增+2並且小於len(str1) print(str1[i]) |
---|
輸出結果:
Python
0 2 4 6 8 **************************************** 0 -2 -4 -6 -8 **************************************** len(str1):8 猿 p t o
1234567891011 |
0 2 4 6 8 ****************************************0 -2 -4 -6 -8 ****************************************len(str1):8 猿pto |
---|
三.重點總結
1.for循環中continue和break的使用方法和while使用方法一樣
2.for循環能直接遍歷字元串/數字區間/列表等序列