Python: introducció ràpida

De Cacauet Wiki
Salta a la navegació Salta a la cerca

Per començar a programar en Python i coneixent pràviament les bases de l'algorismica, us proposo uns consells ràpids:

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:

  1. Cridant el fitxer de text (script) amb l'intèrpret:
     $ python elmeuscript.py
  2. 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
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')


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

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.


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() transforma l'entrada a 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".