Python: tipus bàsics de dades
En aquesta secció suposem que es tenen nocions bàsiques de programació i algorísmica. Anem a veure les particularitats del llenguatge Python en el referent als tipus bàsics de dades.
Per una introducció a la programació en Python podeu mirar-vos aquestes referències:
- UPC assignatura d'informàtica: http://ocwitic.epsem.upc.edu/assignatures/inf/temari
Contingut
Tipus de dades en Python
Podeu seguir els següents links per més referència:
- Wikibooks (aneu als "data types" directament): http://en.wikibooks.org/wiki/Python_Programming#Python_concepts
- Llibre "How to think like a computer scientist" (HthinkCS), traduït per professors de la UPC.
- Versió traduïda al català per professors de la UPC.
- Versió original a openbooks. Potser vols anar directament a la versió 2 (per la v2.x de Python), també hi ha la 3 però no la farem servir en aquest curs encara.
- Beginning Python.
Els diferents tipus de dades en Python son:
- Nombres (sencers, flotants, complexes) wikibooks
- Strings wikibooks / python.org / HthinkCS / llibre introduccio a la programació Cap.7
- Llistes wikibooks / python.org / HthinkCS / llibre introduccio a la programació Cap.8
- Tuples wikibooks / python.org / llibre introduccio a la programació Cap.10
- Diccionaris wikibooks / python.org / HthinkCS / llibre introduccio a la programació Cap.11
- Sets
Més coses:
- Ordenació (sorting): http://docs.python.org/py3k/howto/sorting.html
- Funcions lambda:
- Main functions
- ...
Exercicis
Ex.1 Calculadora
Farem un programa que podrà realitzar diversos càlculs amb dades que li entrarem. Ho farem en diverses passes:
- Realitza una funció que demani les dades (nombres) a l'usuari per la consola i les retorni en una llista. Quan l'usuari entri una dada buida finalitzem l'entrada de dades i retornem la llista.
- Fes un menu de l'aplicació que permeti:
- Entrar les dades a l'usuari.
- Visualitzar les dades per pantalla.
- Calcular la mitjana aritmètica.
- Calcular la mitjana geomètrica.
- Calcular la mediana (nombre entrat que queda al mig dels altres). Per ex.: [1,2,15] la mediana és 2.
- Afegeix una funció que permeti a l'usuari carregar les dades d'un fitxer de text. Cada dada ocupa una línia.
- Afegeix una funció que permeti a l'usuari gravar les dades en un fitxer de text.
Ex.2 Interseccions
Fes una funció que obtingui la intersecció de dues llistes (elements comuns). Els elements poden ser nombres o cadenes de caràcters (strings).
Fes un menú principal de l'aplicació que et permeti:
- Entrar les dades manualment (com l'exercici anterior però ara podem entrar nombres o strings). Caldrà que te les demani 2 cops (necessitem 2 arrays per fer la intersecció).
- Visualitzar les dades per pantalla
- Carregar les dades des de 2 fitxers de text.
- Calcular la intersecció.
Ex.3 Matrius
Construeix una matriu amb llistes (llista de llistes) amb dades que entri l'usuari. Quan entri una dada buida acabarem la fila. Si és el primer element de la fila finalitzarem l'entrada de dades de la matriu.
El menú ha d'oferir:
- Entrar dades de la matriu.
- Carregar-les d'un fitxer, files en línies i dades separades per comes.
- Visualitzar la matriu
- Trasposar la matriu (intercanviar files per columnes).
Ex.4 Diccionaris
Fes una funció que agafi les dades d'un fitxer de text i les posi en un diccionari. El format del fitxer serà:
clau1 = valor 1 del diccionari clau2 = valor 2 del diccionari ...
OJU: les dades al fitxer després del signe "=" no poden contenir aquest signe i no van entre cometes. Caldrà treure els espais abans i després del valor.
El menú ha d'oferir:
- Carregar les dades d'un fitxer.
- Mostrar les dades per pantalla.
- Mostrar el valor d'una clau.
Ex.5 Lliga de futbol
Farem una aplicació per anotar els resultats d'una lligueta de futbol. En l'arxiu de text "equips.cfg" posarem la configuració dels equips, un per línia. Utilitzarem el nom dels equips com a clau del diccionari que contindrà els resultats.
Estructura de dades:
- Les dades les emmagatzemarem en una matriu feta amb diccionaris, és a dir, un diccionari de diccionaris.
- Cadascun dels equips tindrà un diccionari on emmagatzemarà el resultat dels partits (tupla de 2 elements) que ha jugat a casa seva. Així ens adreçarem al resultat d'un partit amb
matriu["local"]["visitant"] = (1 2)