Python: introducció ràpida
Per començar a programar en Python i coneixent pràviament les bases de l'algorismica, us proposo uns consells ràpids:
Contingut
Consola i scripts
Python és un llenguatge interpretat i es pot invocar la consola des de la shell:
enric@pepino:~$ python Python 2.7.3 (default, Apr 20 2012, 22:44:07) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> a=1 >>> print a 1
Per sortir feu servir CTRL+D o quit()
Si volem fer un script (arxiu .py) es pot executar:
- Cridant el fitxer de text (script) amb l'intèrpret:
$ python elmeuscript.py
- Executant-ho com un shell script: cal insertar una línia al principi del script amb la ruta a l'intèrpret i necessitarà permisos d'execució.
Shell script
Creem l'arxiu:
#!/usr/bin/python
i = 7
print i
canviem permisos i l'executem:
$ chmod 755 elmeuscript.py $ ./elmeuscript.py
Accents i demés: codificació UTF-8 de l'arxiu
Python no ens deixarà posar accents i caràcters especials. Si volem poder treballar amb cadenes en el nostre idioma convé canviar-ho al principi de l'arxiu amb:
#!/usr/bin/python
# -*- coding: utf-8 -*-
print "mira què bé"
Si no posem la 2a línia, el script ens donarà un error en executar-ho.
Blocs per indentació, res de claus {}
Els blocs de sentències funcionen amb indentació (és a dir, tabuladors/espais al principi de línia), el que és molt adequat per establir un estil clar i net de programació.
De pas: observa (1) l'assignació múltiple, (2) el condicional i (3) els booleans son amb majúscula (True i False):
a , b = 1, 2 # en Python podem fer assignacions de diverses variables alhora
if a == b:
print "son iguals"
c = True
else:
print "son diferents"
c = False
Cal tenir en compte que:
- Els inicis de bloc els marquen els dos punts ":" de les sentències de control (condicionals, bucles) i de les funcions.
- Tant ens fa posar un tabulador com 3 o 4 espais, la única regla és que la indentació sigui coherent al llarg del bloc.
- Si estem copiant exemples de tutorials i similars, i després afegim codi, serà convenient ajustar el tipus d'indentació de l'editor per tal que sigui coherent. En el cas de l'editor geany (recomanat) es pot canviar a:
Document -> Tipus de sagnat
Variables dinàmiques
En Python, igual que en molts llenguatges interpretats, no cal declarar el tipus de les variables. Es pot crear una variable quan es vulgui i del tipus que es vulgui i es pot canviar al llarg de l'execució. Per exemple:
>>> a = 1 >>> type(a), a (<type 'int'>, 1) >>> a = "cosa" >>> type(a), a (<type 'str'>, 'cosa')
Entrada de dades per teclat
Tenim bàsicament dues funcions:
- input() : s'interpreta l'entrada com a sentència Python
- raw_input() : s'interpreta com una cadena de caràcters
Per exemple:
>>> xx = raw_input() 3+2 <- entrada de teclat >>> xx '3+2'
raw_input() manté l'entrada de teclat com un string (cadena de caràcters). En canvi:
>>> xx = input() 3+2 <- entrada de teclat >>> xx 5
Com podem veure, amb input() s'ha interpretat el "3+2" i s'ha efectuat la suma. També podriem entrar variables:
>>> a = 55 >>> b = input() a <- entrada de teclat >>> b 55
En aquest cas, el que entrem pel teclat "a" s'ha interpretat com la variable i per tant "b" valdrà el mateix que la variable "a".
Funcions
Les funcions es defineixen amb la paraula clau def:
def suma(a,b):
resultat = a + b
return resultat
print suma(3,6)
Condicionals i bucles
Referències a wikibooks de
- Condicionals: "if" i "switch".
- Bucles: "while" i "for"
Important remarcar que els condicionals es poden fer de la manera curta amb:
num = int(input())
res = -num if num<0 else num
Fixa't en:
- l'entrada per teclat input(), també podria ser raw_input() per entrar caràcters.
- hem filtrar l'entrada per tal que num sigui un sencer (int). Si volguéssim un flotant caldria fer
num = float(raw_input())
Bucles
Per fer un bucle típic numèric (no és el més habitual en Python):
for i in range(3,11,2):
print i
És curiós oi? Això és perquè Python, com a bon llenguatge orientat a objectes i d'alt nivell, itera a través de llistes d'objectes. La instrucció:
>>> range(3,11,2) [3, 5, 7, 9]
crea una llista de nombres imparells des de l'inici (3) fins el final (11) saltant de (2) en (2).
Ja veurem quan ens ocupem dels obejctes que el bucle "for ... in ..." és molt més elegant en les aplicacions que ens interessen.
Exercicis
...TODO...