Diferència entre revisions de la pàgina «Python: tipus bàsics de dades»
m (link diccionaris wikibooks) |
|||
Línia 106: | Línia 106: | ||
* Enregistrar les dades d'una lliga en un arxiu de text. | * Enregistrar les dades d'una lliga en un arxiu de text. | ||
* Carregar les dades d'una lliga des d'un arxiu de text. | * Carregar les dades d'una lliga des d'un arxiu de text. | ||
+ | * Mostrar el resultat dels partits. | ||
* Calcular i mostrar la classificació. | * Calcular i mostrar la classificació. | ||
Revisió del 16:46, 5 nov 2012
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.
Les estructures de dades típiques de Python son:
- Llistes: equivaldrien (amb molts peròs) als arrays i matrius.
- Diccionaris: equivalen als arrays associatius.
Els diferents tipus de dades en Python son:
- None: important, s'assembla al NULL de C però és diferent. NULL equival a l'adreça 0. None de Python equival a cap tipus de dada.
- Nombres (sencers, flotants, complexes) wikibooks
- Formatació de nombres: http://docs.python.org/tutorial/inputoutput.html
- 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:
- Fitxers (file)
- 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.
- Ordenar les dades de forma creixent.
- Ordenar les dades de forma decreixent.
- 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).
PISTA: Aneu al tanto al trasposar, ja que cal comprovar si aquell element de la llista existeix. Per altra banda, si al trasposar la matriu ens queden "forats", assigneu-li el valor None a l'element de la llista on hi ha el "forat".
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
resultats["local"]["visitant"] = (1,5)
El menú ha de permetre:
- Crear nova lliga: carregar un arxiu de configuració ("equips.cfg") amb el nom dels equips.
- Entrar les dades d'un partit: t'ha de demanar triar equip local / visitant d'una llista i després entrar els gols de cada equip.
- Esborrar les dades d'un partit (per si hem comès un error a l'entrar-ho).
- Enregistrar les dades d'una lliga en un arxiu de text.
- Carregar les dades d'una lliga des d'un arxiu de text.
- Mostrar el resultat dels partits.
- Calcular i mostrar la classificació.
Format de l'arxiu per emmagatzemar les dades (1 resultat per línia):
equip_local / equip_visitant / gols_local / gols_visitant
Si esteu inspirats podeu afegir estadístiques i funcionalitats, com per exemple:
- Goal average (suma de gols a favor/ en contra).
- Mitjana de gols per partit de cada equip.
- Afegir a l'aplicació quin jugador marca els gols.
- En quin instant es marquen els gols.
- ...vosaltres mateixes!...