我們?cè)谏弦还?jié)提到過計(jì)數(shù)控制的循環(huán)是根據(jù)絕對(duì)值的次數(shù)來進(jìn)行循環(huán),我們通過for語(yǔ)句來實(shí)現(xiàn)計(jì)數(shù)循環(huán),那么在for循環(huán)中一定存在控制次數(shù)的對(duì)象。
1. for循環(huán)
for循環(huán)是通過次數(shù)的大小來進(jìn)行循環(huán),通常我們會(huì)使用遍歷序列或枚舉以及迭代來進(jìn)行循環(huán)。
for循環(huán)的結(jié)構(gòu)為:
for 迭代變量 in 對(duì)象: 循環(huán)體
迭代變量在我們每一次循環(huán)中保存根據(jù)變量得到的值,對(duì)象既是有序的序列,可以是字符串、元組、列表,也可以是無序的序列,例如字典。而循環(huán)體則為一條或若干條會(huì)被重復(fù)執(zhí)行的語(yǔ)句。
下面是for循環(huán)可迭代的對(duì)象類型:
index = [1,2,3,4]#列表 string = 'abcdef'#字符串 sets = (1,2,3,4)#集合 for i in index: print(i) for j in string: print(i) for k in sets: print(i)
我們來看一下for循環(huán)語(yǔ)句的執(zhí)行流程圖:
先定義一個(gè)循環(huán):
for i in range(10)
從流程圖中來分析一下這個(gè)循環(huán)。
首先我們分析這個(gè)循環(huán)的結(jié)構(gòu),i為迭代對(duì)象,range(10)為對(duì)象,在這里這個(gè)對(duì)象為一個(gè)0-9的序列,它等價(jià)于[0,1,2,3,4,5,6,7,8,9]。
當(dāng)進(jìn)入這個(gè)循環(huán),首先會(huì)判斷0-9是否遍歷完,如果還未開始,則從第一個(gè)開始遍歷,第一次是直接進(jìn)入循環(huán)體,然后再次回到判斷,判斷是否還有值未進(jìn)入循環(huán),如果存在,就取這一項(xiàng)再次進(jìn)入循環(huán)體,直到序列中的對(duì)象全部遍歷完,然后退出循環(huán)。
下面我們通過一個(gè)實(shí)例來學(xué)習(xí)一下:
index = 5 for i in range(index): print("這是第",i,'項(xiàng)')
運(yùn)行結(jié)果:
這是第 0 項(xiàng) 這是第 1 項(xiàng) 這是第 2 項(xiàng) 這是第 3 項(xiàng) 這是第 4 項(xiàng)
通過這個(gè)簡(jiǎn)單的例子我們簡(jiǎn)單的認(rèn)識(shí)了for循環(huán),它的原理是根據(jù)對(duì)象中因素去決定它需要迭代多少次,迭代完成后退出循環(huán)。
在for循環(huán)中中離不開range()函數(shù)的使用,下面來了解一下range()函數(shù)。
2. range()函數(shù)
range()函數(shù)是Python內(nèi)置的函數(shù),它被用于生成一系列連續(xù)的整數(shù),它的語(yǔ)法格式為:
range(start, stop[, step])
start:計(jì)數(shù)的第一個(gè)值,是包含這個(gè)值,如果沒有start的時(shí)候默認(rèn)為0。
stop:計(jì)數(shù)的最后一位,不包含這個(gè)值,當(dāng)range(1,3)的時(shí)候,等同于[1,2]是沒有3這個(gè)數(shù)字的,在使用的時(shí)候一定要注意這一點(diǎn)。當(dāng)range()中只有一個(gè)數(shù)字的時(shí)候,像range(3),對(duì)應(yīng)的是[0,1,2]這樣一個(gè)序列,關(guān)于這點(diǎn)大家多多使用就會(huì)體會(huì)到。
step:為步長(zhǎng),用來控制取數(shù)之間的間隔,如果省略則默認(rèn)為1,如果為2,3等則步長(zhǎng)為2,3等。步長(zhǎng)為-1時(shí)為逆序。
通過下面例子來看了解一下range函數(shù)。
>>> list(range(10))#范圍0-9 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(1, 11))#范圍1-10 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> list(range(0, 30, 5))范圍0-29,步長(zhǎng)為5 [0, 5, 10, 15, 20, 25] >>> list(range(0, 10, 3))范圍0-9,步長(zhǎng)為3 [0, 3, 6, 9] >>> list(range(0, -10, -1))范圍0-(-10),步長(zhǎng)為-1 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> list(range(0)) [] >>> list(range(1, 0)) []
能夠熟練的使用range()函數(shù)對(duì)我們之后的學(xué)習(xí)有很大的幫助,大家可以在自己的編輯器上多多嘗試一下這個(gè)函數(shù)。
下一節(jié)我們來講一下循環(huán)嵌套。
3.推薦題解
1431題解(提示:此題目要多次使用到for循環(huán)以及一次while循環(huán))、1634題解(提示:可以使用chr()函數(shù))。
1064 | 二級(jí)C語(yǔ)言-階乘數(shù)列 |
1068 | 二級(jí)C語(yǔ)言-溫度轉(zhuǎn)換 |
1431 | 藍(lán)橋杯2014年第五屆真題-分糖果 |
1634 | 藍(lán)橋杯算法訓(xùn)練VIP-數(shù)組查找及替換 |
C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語(yǔ)言學(xué)練課程
解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語(yǔ)法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程