[Python] Novizio, primo programma e problema

Matteo Scotuzzi matteo a powazord.com
Mar 21 Giu 2011 19:18:12 CEST


2011/6/21 luca pellegrino <anjin75 a gmail.com>

> ciao a tutta la lista,
> sto studiando Python per conto mio e sono digiuno di programmazione.
> Per esercizio sto scrivendo un programma che da dei dizionari estragga
> delle informazioni (nomi, lavoro e anno di nascita) e poi li mostri in due
> frasi.
> Per complicarmi la vita invece di mostrare l'anno di nascita volevo
> mostrare l'eta', cosi' ho pensato di etsrarre la data di sistema, isolare
> l'anno e poi fargli sottrarre l'anno di nascita.
> Pero' mi sono incartato in due cicli for uno dentro l'altro e ora
> l'operazione la ripete 3 volte (i 3 dizionari) per ogni persona. Non so se
> mi sono spiegato, se lo fate girare vi rendete subito conto.
> Come ne esco? Grazie in anticipo se qualcuno vorra' aiutarmi.
>
>
> from datetime import datetime
>
> luca = {"job":"wannacode","name":"luca","nato":"1975-11-02"}
> lucia = {"job":"boss girl","name":"lucia","nato":"1991-02-24"}
> edgar = {"job":"coding", "name":"edgar","nato":"1980-07-04"}
> workers = [luca,lucia,edgar]
>
> #def anno(): #estrae l'anno reale dal sistema e lo trasforma in numero
> #  todaystring = str(datetime.now())
> #  anno_actual = int(todaystring[:4])
> # anno()
>
> e = [] #crea una lista vuota
>
> def anno_nato(): #per ogni lavoratore estrae l'anno di nascita e lo
> aggiunge alla lista 'e'
>   for i in workers:
>     data = i["nato"]
>     anno_nascita = data[:4]
>     e.append(anno_nascita)
> anno_nato()
>
> for y in e:
>   todaystring = str(datetime.now())
>   anno_actual = int(todaystring[:4])
>   c = anno_actual
>   g = int(y) #g adesso e' un numero
>   calc = c - g
>
>   print "prueba eta'", calc #per provare se funziona
>
>   for i in workers:
>     print "il lavoro di", i["name"], "e'", i["job"]
>     print "la eta' di ", i["name"], "e'", calc,"anni"
>
>
> --
> Anjin
>
> WEB: http://www.anjinart.com  ––  BLOG: http://anjinart.blogspot.com/
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>
Ciao a tutti, dato che la domanda mi sembrava possibile anche per un lurker
come me, ho provato a darti la mia soluzione

in pratica evito di costruire una lista di età, ma creo delle funzioni che
estraggano l'età del singolo lavoratore. Ho cercato di variare il meno
possibile il tuo codice. Chiedimi pure se serve

from datetime import datetime

luca = {"job":"wannacode","name":"luca","nato":"1975-11-02"}
lucia = {"job":"boss girl","name":"lucia","nato":"1991-02-24"}
edgar = {"job":"coding", "name":"edgar","nato":"1980-07-04"}
workers = [luca,lucia,edgar]

#def anno(): #estrae l'anno reale dal sistema e lo trasforma in numero
#  todaystring = str(datetime.now())
#  anno_actual = int(todaystring[:4])
# anno()

def anno_nato(lavoratore): #per il lavoratore estrae l'anno di nascita
  data = lavoratore["nato"]
  anno_nascita = data[:4]
  return anno_nascita

def eta(lavoratore): # per il lavoratore calcola l'eta' (usando la funzione
`anno_nato` per estrarne l'anno)
  todaystring = str(datetime.now())
  anno_actual = int(todaystring[:4])
  c = anno_actual
  g = int(anno_nato(lavoratore)) #lavoratore adesso e' un numero
  calc = c - g

  print "prueba eta'", calc #per provare se funziona
  return calc

for i in workers:
  anni_calc = eta(i)
  print "il lavoro di", i["name"], "e'", i["job"]
  print "la eta' di ", i["name"], "e'", anni_calc,"anni"



-- 
Matteo Scotuzzi
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20110621/1eeab424/attachment.html>


Maggiori informazioni sulla lista Python