Esercizio con le matrici

di il
3 risposte

Esercizio con le matrici

Buonasera a tutti! sono alle prese con fondamenti di informatica in python, e mi sono imbattuta nel seguente esercizio di cui allego la traccia.
Io avrei risolto così:

def restituisciBarche(NRTessera,Barche,Velisti):
l=[]
for i in range(1,len(velisti)):
livello=velisti[2]
for i in range(1,len(barche)):
if barche[3]==True and barche[2]<=livello:
l.append(barche[0])
return l

cosa ne pensate?

Allegati:
29117_7c7c9fb8aebac772e73dc36c0cc272c0.jpg
29117_7c7c9fb8aebac772e73dc36c0cc272c0.jpg

3 Risposte

  • Re: Esercizio con le matrici

    Se non formatti il codice con i tag CODE non possiamo dire niente, perché non sappiamo dire se il codice che hai allegato funziona.
  • Re: Esercizio con le matrici

    Mimì ha scritto:


    Buonasera a tutti! sono alle prese con fondamenti di informatica in python, e mi sono imbattuta nel seguente esercizio di cui allego la traccia.
    Io avrei risolto così:
    def restituisciBarche(NRTessera,Barche,Velisti):
      l=[]
      for i in range(1,len(velisti)):
        livello=velisti[i][2]
      for i in range(1,len(barche)):
        if barche[i][3]==True and barche[i][2]<=livello:
          l.append(barche[i][0])
      return l[\code]
    
    cosa ne pensate?
    [/quote]
  • Re: Esercizio con le matrici

    Se hai svolto l'esercizio, lo hai anche eseguito, quindi Python ti avrebbe anche detto dove sono gli errori e se funziona o no. Comunque, l'idea è abbastanza corretta, serve solo correggere i due errori che ci sono:
    Python è CASE SENSITIVE, quindi se una variabile la scrivi 'Velisti', dopo non puoi riferirti a 'velisti'.
    I vettori iniziano da 0, quindi il range deve partire da 0.
    C'è poi un errore nell'implementazione: secondo te, a che serve NRTessera?

    Inoltre, sarebbe bene 'blindare' la funzione contro i casi limite: cosa succede se passo un NRTessera inesistente?
    Cosa succede se uno od entrambi i vettori (Velisti e Barche) sono vuoti?

    Sulla tua funzione si potrebbe poi obiettare che è poco 'pitonica', ma questo dipende dal livello di conoscenza di Python a cui si è arrivati.
    Un esempio 'pitonico':
    for Barca in Barche:
    	if Barca[3] and Barca[2] <= livello:
    		l.append(Barca[0])
    Più pitonico ancora:
    l = [Barca[0] for Barca in Barche if Barca[3] and livello>=Barca[2]]
Devi accedere o registrarti per scrivere nel forum
3 risposte