Topic: Esercizio Dizionari  (Letto 39 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline RicHard

  • python unicellularis
  • *
  • Post: 1
  • Punti reputazione: 0
    • Mostra profilo
Esercizio Dizionari
« il: Aprile 20, 2021, 13:32 »
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

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 385
  • Punti reputazione: 0
    • Mostra profilo
Re:Esercizio Dizionari
« Risposta #1 il: Aprile 20, 2021, 18:46 »
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
>>>