Python/Tondro mifolaka

Avy amin'i Wikibooks
Hanketo: Fikarohana, karohy

Ny tondro mifolaka indray dia hahafahana mamerimberina baiko iray raha toa ka tsy feno ny fetra iray. Ilaina be mihitsy izy io raha ohatra ka hanao asa miverimberina.

Inona ny ilàna manao tondro mifolaka ?[hanova]

Ny ilana manao tondro mifolaka ao amin'ny fanamboarana rindrankajy dia mamerimberina baiko izay efa soratana. Ohatra : raha tia hanoratra rindrankajy mametraka eo amin'ny efa-joro ny valin'ny table 7 isika ; raha 7x1 hatramin'ny 7x10 no tiantsika hosoratana, dia mila averina im-polo izany ilay renifango sahala izao :

print '7x1=', 7*1
print '7x2=', 7*2
...
print '7x9=', 7*9
print '7x10=', 7*10

Mbola mora aloha ny mamaky ary manao debug ny rindrankajikelintsika hatreto, fa raha tiana haseho ny table 7 hatramin'ny 7x3000000 dia ahoana ? Raha isaina fotsiny ny fotoana lany amin'ny fanoratana ilay kaody izany hoe dimy segondra isaky ny andalana dia eo amin'ny roa volana eo ho eo vao ho tapitra ilay rindrankajy (1,9 volana marimarina kokoa) raha manoratra azy tsy misy fialan-tsasatra (fatoriana, fisakafoanana...) ; mba hialana amin'izany no namoronana ny tondro mifolaka. Rehefa mahafehy tsara ilay tondro mifolaka miaraka amin'ny built-in dia andalana roa monja fa tsy telo tapitrisa no ilaina anoratana ilay renifango.


Fanolorana[hanova]

Misy karazana tondro mifolaka roa ao amin'i Python : for ary while.

Tondro mifolaka mampiasa while[hanova]

while x: # fetra, izany manana sanda booleana (True/False)
     ... # Izay baiko haverimberina raha mbola tsy ary diso ilay fetra

Miverimberina ilay tondro mifolaka raha marina (True) hatrany ny sandan'i x. Raha diso (False) no sandany alohan'ny fanombohan'ilay tondro mifolaka, dia tsy raharahiana izay baiko ao anatin'ilay tondro mifolaka. Anefa raha toa ka marina foana ny sandan'i x rehefa ao anatin'ilay tondro mifolaka, ka raha tsy misy fetra mety manova ny sandan'ilay ova x ao anatin'ilay tondro mifolaka dia tsy ho tafavoaka ao amin'ilay bolongam-baiko mihitsy ilay milina, izay manome ny atao hoe tondro mifolaka tsy mifarana na boucle infinie. Mila itandremana izany, satria zavatra mety hampijanona tampoka ny rindrankajy.

Tondro mifolaka mampiasa for[hanova]

for x in iterable(): # sandan'i x, izay miova araka ny sanda avoakan'i iterable() isaky ny "tour de boucle"
     ... # Izay baiko miverimberina raha toa ka mbola misy ny sanda avoakan'i iterable()

Ny for indray dia atao ampiasaina ny iterable. Ny iterable dia zavatra (objet) mamerina sanda isaky ny antsoina. Manome sanda manokana izy rehefa te-hilaza hoe tsy hanan-tsanda halefa intsony. Fantatry ny rindrankajy izay sanda manokana halefan'ilay iterable izay dia mivoaka ho azy amin'ilay tondro mifolaka.

Anisan'ny iterable hita matetika dia hita ny tohintsoratra str(), ny elanelana range(min, max) (intervalle) izay mamoaka lisitr'isa feno, ary zavatra hafa maro...

Mivoaka amin'ny tondro mifolaka[hanova]

Azo atao ny manajanona ny fisesen'ny baiko ao amin'ny tondro mifolaka : azo averina hatramin'ny voalohany ny execution ny baiko raha toa ka misy hadisoana eny antenantenan'ny baiko eny ; azo ivoahana koa ilay tondro mifolaka raha toa ka misy fetra feno izay.

Ny fanaovana ilay voalohany dia ilay teny continue izay midika hoe tohizana. Ny fanaovana ilay faharoa dia break ajanona. Anaty tondro mifolaka ihany ireo teny ireo no azo ampisaina, ka raha mampiasa azy any ivelan'ny tondro mifolaka ianao dia tsy handeha ilay rindrankajinao.

Renifango iray tsy misy tondro mifolaka[hanova]

Ity no zavatra tiana hatao : haneho ny table 7 hatramin'ny 7x10. Mba hanaovana izany dia andalana folo no hilaina, toy izao :

nb = 7
print(" 1 *", nb, "=", 1*nb)
print(" 2 *", nb, "=", 2*nb)
print(" 3 *", nb, "=", 3*nb)
print(" 4 *", nb, "=", 4*nb)
print(" 5 *", nb, "=", 5*nb)
print(" 6 *", nb, "=", 6*nb)
print(" 7 *", nb, "=", 7*nb)
print(" 8 *", nb, "=", 8*nb)
print(" 9 *", nb, "=", 9*nb)
print("10 *", nb, "=",10*nb)

Amin'io renifango io dia ity no azontsika amin'ny efa-joro :

1 * 7 = 7
 2 * 7 = 14
 3 * 7 = 21
 4 * 7 = 28
 5 * 7 = 35
 6 * 7 = 42
 7 * 7 = 49
 8 * 7 = 56
 9 * 7 = 63
10 * 7 = 70

Renifango iray misy tondro mifolaka[hanova]

Ity amin'izay ny misy tondro mifolaka, misy teny vaovao ampiasaina, antsoina hoe while ("Rehefa mbola ...") hahamora ny fanoratantsika ilay renifango. Mitovy ihany ny valiny, fa ny isan'ny andalana fotsiny no samihafa araka ny fahitanareo azy :

 nb = 1
 while nb <= 10: # Rehefa latsaky ny folo ny sandan'i nb
	print '7* ' + str(nb) + '=' + str(7*nb) # Aseho eo amin'ny efajoro ny kambantsoratra ahitana ny sandan'i nb
	nb += 1 # Fampitomboana an'i nb

io renifango mirefy andalana efatra io dia manome ny valiny manaraka :

7* 1=7
7* 2=14
7* 3=21
7* 4=28
7* 5=35
7* 6=42
7* 7=49
7* 8=56
7* 9=63
7* 10=70

Ny hafohin'ilay renifango dia hahafahantsika manazava izay zavatra nosoratana :

Famisavisana 
  • Eo amin'ny andalana voalohan'ilay renifango dia apetrantsika ny sanda voalohany izay hoampiakarina isaky ny tondro mifolaka miverina hatramin'ny voalohany : satria, aza hadino : ny tondro mifolaka dia mamerina izay baiko ao ambaniny.
  • Eo amin'ny andininy faharoa no ahitana ny teny while, mitovitovy amin'i if ny rafiny, fa ovaina ho while fotsiny ilay if.
  • print dia hampiseho ny zavatra eo amin'ny efa-joro, ilay str(nb) dia hahafahana mamadika ilay isa ho tohintsoratra, satria tsy azo ampiarahana ny tohintsoratra sy ny isa. Ilay (7*nb) dia fikajiana ary ilay str eo alohany dia famadihana ilay valiny ho tohintsoratra.
  • Ilay nb+=1 dia baiko hampijanona ny tondro mifolaka, raha tsy izany dia hihodina foana ilay renifango rehefa alefa, ary ratsy izany satria mety hampiasa be ny solosainao.

Ny tombontsoa azo amin'ny fampiasana ny tondro mifolaka dia izy manafohy ny renifango amin'ny fomba goavana : raha ohatra ka tiana hanana ny valin'ny table 7 hatramin'ny isa iray alina, dia andalana efatra ihany no ilaina. Mahakely ny haben-drakitra izany sady hahafahana manova ilay renifango moramora kokoa.

Tondro mifolaka amin'ny alalan'ny teny for[hanova]

Azo ampiasaina amin'ny ankamaroan'ny rindrankajy ibaikoana ny tondro mifolaka sahala an'i while. Fa vitsy no afaka manao tondro mifolaka amin'ny alalan'i for ; marina fa manana io teny io koa ny Java sy ny C++, fa tsy mitovy ny dikany. Ao amin'i Perl sy PHP indray, na dia misy koa aza ny for sahala ny C++, dia ahitana ihany koa ny foreach izay mitovitovy fomba fampiasana amin'ny for an'i Python.

Ny for indray dia miasa eo amina fampahalalana, na data. Satria koa natokana ho an'ny fitetezana fampahalalana ny for. Izany fampahalalana azo itetezana amin'ny alalan'i for izany dia tohintsoratra ohatra.

Ny tohintsoratra na kambantsoratra dia soratra mifandahatra sahala "abcdefghijklm", "kilalao" na "rindrankajy". Izy ireo dia ova izay "iterable" , izany hoe azo ampaisaina avy hatrany anaty tondro mifolaka for ... in ... araka ny fanehoana azy eo ambany.

Ny fomba fampiasana ny baiko for indray dia izao :

kambana = "kilalao"

for ovamiova in kambana :
	print ovamiova

Raha ohatra ka "kilalao" ny votoatin'ny ova kambana dia ny sandan'i ovamiova dia 'k' amin'ny voalohany, dia mandefa ny baiko manaraka, izany hoe prit ovamiova, izany hoe mamoaka ny votoatin'i ovamiova eo amin'ny efa-joro ; rehefa vita izay zavatra izay dia miverina amin'ny voalohany indray ilay baiko, fa eto indray 'i' ny votoatin'i ovamiova, dia io indray no ho avoakany eo amin'ny efa-joro, dia toy izay hatrany ho an'ny litera sasany ('l', 'a', 'l', 'a', 'o')... izay manome :

k
i
l
a
l
a
o

eo amin'ny efa-joro.

Famerenana ny tondro mifolaka in-N amin'ny alalan'i range()[hanova]

Hitantsika ny fanaovana tondro mifolaka amin'ny kambantsoratra amin'ny alalan'ny for ; dia ho atolotra eto indray ny fanaovana tondro mifolaka amin'ny alalan'ny isa. Izao ny aligôritma voalohany azo anaovana izany :

Ity ny aligôritma voalohany manao tondro mifolaka mifototra amin'ny isa amin'ny alalan'ny baiko while

mpanisa = 0
while mpanisa < 5:
	print 'Salama!'
	mpanisa += 1

dia mamoaka ity zavatra ity eo amin'ny efa-joro :

        
Salama!
Salama!
Salama!
Salama!
Salama!

Ary ity ny aligôritma iray hafa mitovy fandehanana amin'ilay aligôritma eo ambony, fa eto indray ampiasaina ny teny for:

for i in range(0,5):
	print 'Salama!'

   
Salama!
Salama!
Salama!
Salama!
Salama!

Mitovy ihany ny valin avoakan'ireo renifango roa natolotra ireo, fa mahafohy kokoa ny renifango ny fampiasana ny teny for ary range.

Ilay range dia atao hoe built-in iterable izany hoe azo iharan'ny tondro mifolaka. Ilay range io dia mamoaka lisitra isa feno ("integer" amin'ny teny anglisy, "entier" amin'ny teny frantsay) ; izaky ny miverina amin'ny fetra voalohany ilay mpamaky (interpreter), dia miampy ray avy hatrany ny sandan'i i noho ny fisian'ilay range(). Ao amin'i Python, dia azo atao ho mpanisa izy io, raha mila averina in-N ireo baiko manaraka indentation.

Noho ny voalaza teo ambony, dia azo ampiharina amin'ilay fikajiana natao tany am-boalohany ilay built-in range(), ka izao no vokany

for i in range(0,100):
	print '7* ' + str(i) + '=' + str(7*i)

ka izao no vokany eo amin'ny efa-joro :

7* 0=0
7* 1=7
7* 2=14
7* 3=21
7* 4=28
7* 5=35
7* 6=42
7* 7=49
7* 8=56
7* 9=63
...
7* 90=630
7* 91=637
7* 92=644
7* 93=651
7* 94=658
7* 95=665
7* 96=672
7* 97=679
7* 98=686
7* 99=693

(nafohezina fananiana ilay valiny eto mba tsy hameno ny pejy)