Teoria e pratica > Esercizi

Esercizio Dizionari

(1/1)

RicHard:
Data: una sequenza S di coppie di interi
Calcolare: la somma delle prime componenti di quelle coppie per le quali la seconda componente appare più di una volta
(come seconda componente di una coppia)
Esempio:
Dato: ( (1,2), (2,3), (3,2), (10,1), (-2, 2), (-1,3), (1,9))
Restituisce: 3 , cioè la somma della prima componente delle coppie (1,2), (3,2), (-2, 2), (-1,3), (2,3)

NON STO RIUSCENDO FARE QUESTO ESERCIZIO QUALCUNO RIESCE A DARMI UNA MANO. VI MANDO IL CODE CHE HO REALIZZATO FIN'ORA:


def somma_prime_comp(S):
   SD= dict(S)
   somma=0
   Val= list(SD.values())
   for e in range(len(Val)-1):
       if Val[e]==Val[e+1]:
           somma = somma + int(SD[e])
   return somma

S=( (1,2), (2,3), (3,2), (10,1), (-2, 2), (-1,3), (1,9))
print(somma_prime_comp(S))

OVVIAMENTE NON FA QUELLO CHE DEVE FARE

nuzzopippo:
Beh, @RicHard ... un esercizio serve a farti ragionare, bisogna mettercisi un po' su o serve a poco

Dato che è il Tuo primo post qui Ti darò l'imbeccata utilizzando i dizionari in titolo ma Tu, almeno, ragiona sul codice e poi, magari, descrivi a parole i passi che effettua e perché, Ti sarà utile esercizio.

PS. - quando devi inserire codice utilizza il comando "pythoncode" dell'editor dei post

>>> summe = {}
>>> Dato = ((1,2), (2,3), (3,2), (10,1), (-2, 2), (-1,3), (1,9))
>>> for i in range(len(Dato)):
key = Dato[i][1]
if key in summe.keys():
continue
else:
summa = None
for d in Dato[i+1:]:
if d[1] == key:
summa = Dato[i][0] + d[0] if summa is None else summa + d[0]
if summa is None:
continue
else:
summe[key] = summa


>>> for key in summe.keys():
print('somma %d = %d' % (key, summe[key]))


somma 2 = 2
somma 3 = 1
>>> tot = 0
>>> for key in summe.keys():
tot += summe[key]


>>> tot
3
>>>
--- Termina codice ---

Navigazione

[0] Indice dei post

Vai alla versione completa