Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Python - Esercizio universitario
Forum - Python - Esercizio universitario

Avatar
Nadino (Normal User)
Newbie


Messaggi: 2
Iscritto: 29/10/2012

Segnala al moderatore
Postato alle 15:00
Lunedì, 29/10/2012
Questa è la traccia dell'esercizo

'''
Ritorna un dizionario che combina il dizionario di input addr, che
contiene associazioni nome-indirizzo, e il dizionario phone, che contiene
associazioni nome-telefono. Il dizionario ritornato ad ogni nome N
in uno dei due dizionari associa un dizionario che contiene la chiave
'address' con valore l'indirizzo di N in addr (se presente in addr) e
la chiave 'phone' con valore il telefono di N in phone (se presente in
phone). La funzione non deve fare nessun controllo sui valori presenti
nei dizionari. Esempi

addr = {'Giorgio': 'via Verdi, 23', 'M. Bianchi': 'Piazza Milano, 1',
'L. De La': 'via A. Einstein, 12', 'Ciro': 'via Pio'}
phone = {'Marco': '347 8987989', 'giorgio': '06 89786765',
'Mauro B.': '3489878675', 'Ciro': '07897878', 'L. De La': '09877887'}

addr_phone(addr, phone) -->
{'Giorgio': {'address': 'via Verdi, 23'},
'Marco': {'phone': '347 8987989'},
'giorgio': {'phone': '06 89786765'},
'L. De La': {'phone': '09877887', 'address': 'via A. Einstein, 12'},
'Ciro': {'phone': '07897878', 'address': 'via Pio'},
'Mauro B.': {'phone': '3489878675'},
'M. Bianchi': {'address': 'Piazza Milano, 1'}}


addr = {'blue': 'place', 'white': 'boh', 'BLACK': '1234', 'red': 'street'}
phone = {'blue': 'number', 'gray': 'Num', 'red': 'Phone', 'Red': 'TEL'}

addr_phone(addr, phone) -->
{'blue': {'phone': 'number', 'address': 'place'},
'gray': {'phone': 'Num'},
'BLACK': {'address': '1234'},
'red': {'phone': 'Phone', 'address': 'street'},
'white': {'address': 'boh'},
'Red': {'phone': 'TEL'}}


quando eseguo il codice viene tutto giusto a parte Ciro dove la via e il numero di telefono non risultano divisi . Qualcuno mi spiega perchè?

Inoltre come posso fare per aggiungere "address" e "phone" nella stampa prima dei valori?

questo è il codice che ho usato:

def addr_phone(addr, phone):
Dizionario = {}
for x in addr:
if x not in Dizionario:
Dizionario[x] = addr[x]
else:
Dizionario[x] += addr[x]
for y in phone:
if y not in Dizionario:
Dizionario[y] = phone[y]
else:
Dizionario[y] += phone[y]
return Dizionario

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 19:12
Lunedì, 29/10/2012
Ciao!

Il programma non funziona perché aggiungi una stringa alla voce dizionario, anzichè creare un "sotto dizionario".
Prova a ragionare con le chiavi.

PM Quote
Avatar
Nadino (Normal User)
Newbie


Messaggi: 2
Iscritto: 29/10/2012

Segnala al moderatore
Postato alle 9:02
Mercoledì, 31/10/2012
Mi dà spesso questo errore se uso i dizionari:

Traceback (most recent call last):
  File "C:\Users\AN\Desktop\Università\Esercitazioni\Esercitazione programmazione 2\program02.py", line 53, in <module>
    print addr_phone(addr, phone)
  File "C:\Users\AN\Desktop\Università\Esercitazioni\Esercitazione programmazione 2\program02.py", line 42, in addr_phone
    ret[x]['addr'] = addr[x]
KeyError: 'L. De La'

PM Quote