時(shí)寬宇
摘 要:在中學(xué)開(kāi)展python程序語(yǔ)言課程,存在各種各樣的難題,本文探討通過(guò)大量實(shí)例來(lái)講解python語(yǔ)言中計(jì)數(shù)循環(huán)語(yǔ)句,可以讓學(xué)生更容易接受理解。實(shí)例設(shè)計(jì)時(shí)由簡(jiǎn)到難,層層遞進(jìn),知識(shí)在實(shí)例中展現(xiàn),讓學(xué)生在實(shí)例中理解知識(shí)。
關(guān)鍵詞:python語(yǔ)言;計(jì)數(shù)循環(huán)
計(jì)算機(jī)程序通常會(huì)周而復(fù)始地重復(fù)同樣的步驟,這稱為循環(huán)。重復(fù)一定次數(shù)的循環(huán),稱為計(jì)數(shù)循環(huán)。計(jì)數(shù)循環(huán)還被很多人稱為for循環(huán),因?yàn)楹芏嗾Z(yǔ)言在程序中都使用for關(guān)鍵字來(lái)創(chuàng)建這樣類型的循環(huán)。循環(huán)在編程中是非常重要的語(yǔ)句,如何讓學(xué)生更清晰明了的理解循環(huán),需要教師巧妙設(shè)計(jì)例子,而在實(shí)例中可以讓學(xué)生更容易理解。
一、初次接觸,簡(jiǎn)單了解
學(xué)生第一次接觸語(yǔ)言中的循環(huán)語(yǔ)句,對(duì)這些語(yǔ)句不清楚,不知道是做什么用處的,也不知道如何使用代碼來(lái)完成,這時(shí)需要教師巧妙設(shè)計(jì),通過(guò)例子,讓學(xué)生容易理解這些問(wèn)題,從而讓學(xué)生不產(chǎn)生畏難心理。教師可以先通過(guò)寫(xiě)代碼,運(yùn)行讓學(xué)生看結(jié)果,再返回來(lái)講解代碼中的語(yǔ)句的含義,這樣學(xué)生就會(huì)明白每一條語(yǔ)句都是起什么作用了,結(jié)合python語(yǔ)言簡(jiǎn)單易懂的特點(diǎn),循環(huán)語(yǔ)句就變得簡(jiǎn)單了。
例1:來(lái)了解一個(gè)簡(jiǎn)單的循環(huán),在python中代碼如下:
>>> for loop in [1,2,3,4]:
print "hello,world!"
保存為loop.py,運(yùn)行這個(gè)程序,可以看到這樣的結(jié)果:
hello,world!
hello,world!
hello,world!
hello,world!
例1代碼的意思是:變量loop的值從1開(kāi)始,對(duì)應(yīng)列表中的每一個(gè)值,這個(gè)循環(huán)會(huì)把下一個(gè)指令塊中的所有工作完成一次,每次執(zhí)行循環(huán)時(shí),變量loop會(huì)賦予這個(gè)列表中的下一個(gè)值。Print “hello,world!”就是python每次循環(huán)時(shí)要執(zhí)行的代碼。For循環(huán)需要一個(gè)代碼告訴程序每次循環(huán)時(shí)做什么。通過(guò)這個(gè)實(shí)例,可以讓學(xué)生清楚理解計(jì)數(shù)循環(huán)的原理,學(xué)生在編程時(shí)就會(huì)注意語(yǔ)句的編寫(xiě),從而不再犯此類型錯(cuò)誤。
二、層層遞進(jìn),逐步加深
在了解簡(jiǎn)單的循環(huán)后,為加深學(xué)生對(duì)計(jì)數(shù)循環(huán)的印象,可以在此基礎(chǔ)上設(shè)計(jì)增加難度的程序,讓學(xué)生在實(shí)例中更加清楚認(rèn)識(shí)循環(huán)結(jié)構(gòu)。
例2:打印6的乘法口訣:
>>> for loop in [1,2,3,4]:
print loop,"* 6=",loop * 6
把這個(gè)程序保存為L(zhǎng)oop3.py,然后運(yùn)行。會(huì)看到這樣的結(jié)果:
1 * 6= 6
2 * 6= 12
3 * 6= 18
4 * 6= 24
三、巧用函數(shù),化繁為簡(jiǎn)
在上面的例子中,我們只循環(huán)了4次,如果希望循環(huán)運(yùn)行100 次或者更多呢?這就得鍵入很多的數(shù)!如果利用range()函數(shù),只輸入起始值和結(jié)束值,就會(huì)創(chuàng)建這二者之間的所有值。Range()會(huì)創(chuàng)建一個(gè)列表,其中包含某個(gè)范圍內(nèi)的數(shù)。使用在乘法表中用到的例子,使用range()函數(shù)。
>>> for loop in range(1,4):
print loop,"* 6=",loop * 6
把這個(gè)程序保存為L(zhǎng)oop4.py 并運(yùn)行,會(huì)看到這樣的結(jié)果:
1* 6= 6
2 * 6= 12
3 * 6= 18
讓學(xué)生觀察運(yùn)行結(jié)果,思考:這樣的結(jié)果是不是我們要的結(jié)果?是哪里出了問(wèn)題?如何解決這個(gè)問(wèn)題?通過(guò)學(xué)生思考這三個(gè)問(wèn)題,這樣才能讓學(xué)生理解循環(huán)是如何執(zhí)行命令的。最后教師再給出正確的解釋:基本上與第一個(gè)結(jié)果完全相同……不過(guò)少了最后一次循環(huán)!為什么呢?答案在于,range(1,4)給出的列表是[1,2,3]。range()函數(shù)會(huì)提供一個(gè)數(shù)字列表,從給定的第一個(gè)數(shù)開(kāi)始,在給定的最后一個(gè)數(shù)之前結(jié)束,用更準(zhǔn)確的語(yǔ)言來(lái)說(shuō)就是它包含下限(本例中為1),但不包含上限(本例中為4),所以在編程中需要考慮到這一點(diǎn),調(diào)整范圍來(lái)得到想要的循環(huán)次數(shù)。
四、巧設(shè)練習(xí),加強(qiáng)學(xué)生理解
學(xué)習(xí)需要不斷練習(xí),教師需要設(shè)計(jì)相關(guān)練習(xí)讓學(xué)生自己摸索探究才能理解循環(huán)的語(yǔ)句。如何用for循環(huán)實(shí)現(xiàn)百元百雞。此問(wèn)題是程序設(shè)計(jì)的經(jīng)典問(wèn)題,涉及多層循環(huán),能很好的提升學(xué)生的編程思維能力。
例6:某人帶100元去買(mǎi)雞,已知每只小雞0.5元,每只公雞2元,每只母雞3元,要求100元正好買(mǎi)100只雞,求出買(mǎi)雞方案。
程序代碼如下:
>>> for cock in range(1,51):
for hen in range(1,34):
for biddy in range(1,100):
if(2*cock+3*hen+biddy*0.5)==100:
if(cock+hen+biddy)==100:
print "cock=",cock,"hen=",hen,"biddy=",biddy
把這個(gè)程序保存為chicken.py 并運(yùn)行,你會(huì)看到這樣的結(jié)果:
cock= 5 hen= 17 biddy= 78
cock= 10 hen= 14 biddy= 76
cock= 15 hen= 11 biddy= 74
cock= 20 hen= 8 biddy= 72
cock= 25 hen= 5 biddy= 70
cock= 30 hen= 2 biddy= 68
對(duì)于剛開(kāi)始接觸編程的學(xué)生來(lái)說(shuō),實(shí)例越簡(jiǎn)單易懂,接受起來(lái)越容易,選擇python語(yǔ)言來(lái)進(jìn)行教學(xué),更符合python的初衷:簡(jiǎn)單易懂。實(shí)例的選取決定了一堂課的成敗,由易到難的遞進(jìn),更符合學(xué)生的學(xué)情和認(rèn)知能力,所以教師在設(shè)計(jì)課程時(shí),除了要考慮學(xué)生的學(xué)情和認(rèn)知能力以外,還需要從學(xué)生的角度去考慮,設(shè)計(jì)合理合適的實(shí)例,由簡(jiǎn)到難,層層遞進(jìn),讓學(xué)生在學(xué)習(xí)中不產(chǎn)生畏難心理,潛移默化中,在剖析實(shí)例的過(guò)程中理解掌握程序語(yǔ)言的編寫(xiě)。