Instruilo por la programlingvo Pitono

Bonvolu sendi korektojn, proponojn, kaj sugestojn al vilcxjo ĉe esperanto-me.org

Regi Fluon

La instrukcio Print
La instrukcio While
La instrukcio If
La instrukcio For
La funkcio Range()
La instrukcioj Break kaj Continue , kaj la frazero Else
La instrukcio Pass
Iteraciaj teknikoj

La instrukcio Print (baza informo)

La instrukcio print skribas la valoron de la esprimo(j) donita(j). Ĝi malsimilas al la simpla skribado de esprimo (vidu la kalkulilaj ekzemploj) per la maniero de la traktado de esprimoj kaj ĉenoj. Ĉenoj estas skribitaj sen limdifinaj citiloj aŭ apostrofoj, kaj unu spaco estas enmetita inter eroj, por ke vi povas agrable formati aĵojn, ekzemple:

   >>> i = 256*256
>>> print 'La valoro de i estas', i

La valoro de i estas 65536

Fina komo evitas novlinian signon je la fino de la linio:

   >>> a, b = 0, 1
... print a,
... print b,

...
0 1

La instrukcio While

Kompreneble, ni povas uzi Pitonon por pli komplika taskoj ol la sumado de du kaj du.

Por ekzemplo, ni povas skribi la komencan sekvencon de la Fibonacci-a serio jene:

   >>> # Fibonacci-a serio:
...
# la sumo de du eroj difinos la sekvontan
... a, b = 0, 1
>>> while b < 10:
...     print b
...     a, b = b, a+b
...
1
1
2
3
5

Ĉi tiu ekzemplo enkondukas kelkajn novajn trajtojn.

Pitono ne (ĝis nun!) provizas inteligentan kapablecon por manipuli programliniojn, do vi devas tajpi signon tabo, aŭ spaco(j)n por krei linian marĝenon. Praktike, vi pretigos pli komplikan programtekston kun redaktilo; la plejparto de redaktiloj havas aŭtomatan marĝeniga-kapablecon.

La instrukcio If

Eble la plej konata instrukcio estas la instrukcio if. Same ĉe la instrukcio while, ĉiu instrukcio en kodogrupo devas havi precize la saman marĝenon.

Por ekzemplo:

   >>> if a < 0:
... a = 0
...    print 'Negativaĵo iĝas nulo'
... elif a == 0:
...    print 'Nulo'
... elif a == 1:
...    print 'Unu'
... else:
...    print 'Pluraj'

...

Povas esti nul aŭ pli partoj elif, kaj la parto else estas laŭbezona. La sekvenco
If ... elif ... elif ...
estas anstataŭo por la instrukcioj switchcase trovitaj je aliaj lingvoj.

 

La instrukcio For

La instrukcio for en Pitono malsamas iomete de tiu al kiu vi alkutimiĝis ĉe aliaj lingvoj. La instrukcio for iteracias unuope laŭ la eroj de iu ajn sekvenco (ekz., listo aŭ ĉeno). Por ekzemplo:

   >>> # Mezuru ĉiun ĉenon en listo:
... a = ['kato', 'fenestro', 'elfenestrigi']
>>> for z in a:
...    print z, len(z)
...
kato 4
fenestro 8
elfenestrigi 12

Kiel en la kazoj while kaj for, ĉiu instrukcio en kodogrupo devas havi precize la saman marĝenon.

Ne ŝanĝu sekvencon kiun vi samtempe uzas por iteracii. Se vi bezonas fari tion, faru kopion, kaj uzu kopion por iteracii. La tranĉ-notacio estas speciale konvena por tia:

   >>> for p in a[:]: #faru sekcan kopion de la tuta listo
... if len(p) > 8:
...    a.insert(0, p)
...
>>> a
['elfenestrigi','kato', 'fenestro', 'elfenestrigi']

La funkcio range()

Se vi ja bezonas iteracii laŭ sekvenco de numeroj, la prafunkcio range() estas utila. Ĝi kreis liston kiu enhavas matematikan progreson, ekz.

   >>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

La finopunkto neniam estas parto de la kreita listo. Vi povas komenci la sekvencon je alia numero, aŭ difini alian pliaĵon (eĉ negativan):

   >>> range(5, 10)
[5, 6, 7, 8, 9]
>>> range(0, 10, 3)
[0, 3, 6, 9]
>>> range(-10, -100, -30)
[-10, -40, -70]

Por iteracii laŭ la indicoj de sekvenco, kunmeti funkciojn range() kaj len() jene:

   >>> a = ['Maria', 'havas', 'malgrandan', 'ŝafidon']
>>> for i in range(len(a)):
...     print i, a[i]
...
0 Maria
1 havas
2 malgrandan
3 ŝafidon

La instrukcioj Break kaj Continue , kaj la frazero Else

La instrukcio break ĉesigas la plej internan aktivan iteracion forwhile, kaj saltigas fokuson al la instrukcio post la iteracio.

 La instrukcio continue, saltigas fokuson al la fino de la kodogrupo, kaj daŭrigas la iteracion.

 Iteracioj povas havi frazeron else: ĝi aktiviĝas kiam la iteracio finas pro ke la sekvenco estas elĉerpita (instrukcio for) aŭ kiam la kondiĉo iĝas malvera (instrukcio while), sed ne se la iteracio finas pro instrukcio break. Jen ekzemplo, kiu serĉas primajn numerojn:

   >>> for n in range(2, 10):
...    for z in range(2, n):
...       if n % z == 0:
...         print n, 'egalas', z, '*', n/z
...         break
...    else:
...        #iteracio finis kaj ne trovis faktoro             
...       print n, 'estas prima numero'
...

2 estas prima numero
3 estas prima numero
4 egalas 2 * 2
5 estas prima numero
6 egalas 2 * 3
7 estas prima numero
8 egalas 2 * 4
9 egalas 3 * 3

La instrukcio Pass

La instrukcio pass faras nenion. Vi uzas ĝin kiam instrukcio estas sintakse necesa, sed agado ne estas necesa. Ekz:

   >>> while True:
...    pass
# okupata- atendu klavaran interrompon
...

Iteraciaj teknikoj

Kiam vi iteracias tra vortaro, vi povas ricevi la parojn (ŝlosilo kaj ĝia valoro) samtempe per la metodo items()

   >>> kavaliroj = {'galahado': 'la pura', 'robino': 'la kuraĝa'}
>>> for k, v in kavaliroj.items():
... print k, v
...
galahado la pura
robino la kuraĝa

Kiam vi iteracias tra sekvenco, vi povas ricevi la pozician indicon kaj la respondan valoron per la metodo enumerate(). Ĉi tiu funkcio kreas pli klaran kodon ol range(len())

   >>> for i, v in enumerate(['nul', 'unu', 'du']):
... print i, v
...
0 nul
1 unu
2 du

Por iteracii tra du aŭ pli sekvencoj samtempe, vi povas pari la erojn per la funkcio zip().

   >>> demandoj = ['nomo', 'serĉo', 'preferata koloro']
>>> respondoj = ['lanceloto', 'la sankta gralo', 'bluo']
>>> for d, r in zip(demandoj, respondoj):
... print 'Kio estas via '+d+'?',
... print 'Estas '+r+'.'
...
Kio estas via nomo? Estas lanceloto.
Kio estas via serĉo? Estas la sankta gralo.
Kio estas via preferata koloro? Estas bluo.

Supren