Simulazione test universitario Python

di il
5 risposte

Simulazione test universitario Python

Ciao a tutti ragazzi, piacere Mattia! Sono nuovo del forum e anche del mondo della programmazione. Studio ingegneria e mi sono da poco approcciato a Python. Nonostante mi destreggi bene sulle basi sto riscontrando qualche difficoltà su alcuni esercizi di esame e vorrei un consiglio.
# ESERCIZIO N. 2
# Si scriva una funzione:
# output = estraiDieci(L)
# che data una lista di numeri restituisca una lista nella quale ci siano tutte le coppie di numeri
# la cui somma è 10. I numeri non si ripetono nella lista L
# Esempio
# L1 = [3,5,7,5,2,8,1]
# output = [3,7,5,5,2,8]

LA MIA SOLUZIONE:
def estraiDieci(L):
    output = []
    for n in range(len(L)):
        for m in range(len(L)):
            if L[n] + L[m] == 10:
                output.append(L[n])
                output.append(L[m])
                L[m] = 0
                L[n] = 0
    return output
    
    mio Output = [3, 7, 5, 5, 5, 5, 2, 8]
    atteso = [3, 7, 5, 5, 2, 8]
    
ESERCIZIO N. 3 (che so fare se utilizzo le date come stringhe)
# si scriva una funzione che, partendo dal numero di prodotti difettati per linea di produzione osservati giornalmente
# restituisca la media dei prodotti difettati per linea di produzione nel periodo considerato
# output = osservatoreMedioProdottiDifettati(prodottiDifettatiPerLinea)
#
# Esempio
# prodottiDifettatiPerLinea = [("linea1","1/1/2000",5),("linea1",2/1/2000,6),("linea2",3/1/2000,3),("linea1",4/1/2000,5),
# ("linea3",1/1/2000,4),("linea2",2/1/2000,9),("linea3",3/1/2000,-1),("linea2",4/1/2000,9),
# ("linea2",1/1/2000,10),("linea3",2/1/2000,12),(Roma,3/1/2000,1),("linea3",4/1/2000,16)]
# output = {'linea1': 4.25, 'linea2': 7.75, 'linea3': 7.75}

Scusate se forse ho esagerato nella descrizione del problema. Ringrazio in anticipo chiunque possa aiutarmi!

5 Risposte

  • Re: Simulazione test universitario Python

    Ciao, nel primo ti incastri perché 5 è presente più di una volta nella lista, prova a trasformare la lista in un insieme (set()) nel secondo for.
    Per il secondo... non hai un tuo tentativo? Io farei un for sulla lista, salvi i dati per linea in un dizionario per calcolare la media e poi lo trasformi nell output richiesto
  • Re: Simulazione test universitario Python

    Premesso che non l'ho testato essendo dal cellofono, per il primo esercizio potresti provare una cosa del genere, non hai bisogno di ripartire da 0 ogni volta nel secondo for visto che le coppie precedenti le hai già controllate no?
    
        for n in range(len(L)):
            for m in range(n + 1, len(L)):
    
  • Re: Simulazione test universitario Python

    Il primo esercizio l'ho risolto con la libreria itertools, ma non so se la soluzione sarebbe valida per il test universitario... Dipende se l'uso di itertools è ammesso. In pratica ho detto ad itertools.combinations(lista, dimensione) di farmi tutte le combinazioni a 2 a 2 della lista di partenza. Di ogni combinazione generata ho fatto la somma, se è uguale a 10 aggiungo la tupla in una tupla-rusultato.

    Il secondo, non vedo quale sia l'intoppo: in breve, hai un vettore di tuple, crei un vettore che contiene le 3 medie, iteri sul vettore principale (scartando i valori non validi), estrai le tuple, aggiorni le medie ed esci con il dizionario finale.
    Se il problema è la data, la libreria datetime è lì apposta.
  • Re: Simulazione test universitario Python

    IfNotFalseTrue ha scritto:


    Premesso che non l'ho testato essendo dal cellofono, per il primo esercizio potresti provare una cosa del genere, non hai bisogno di ripartire da 0 ogni volta nel secondo for visto che le coppie precedenti le hai già controllate no?
    
        for n in range(len(L)):
            for m in range(n + 1, len(L)):
    
    Grazie a tutti per aver risposto, siete stati molto utili! Con il metodo di IfNotFalseTrue ho risolto quel problema ma il terzo non ho ancora bene capito come risolverlo...
  • Re: Simulazione test universitario Python

    Grazie a tutti per aver risposto, siete stati molto utili! Con il metodo di IfNotFalseTrue ho risolto quel problema ma il terzo non ho ancora bene capito come risolverlo...
    Il terzo problema ha un problema di sbaglio:
    prodottiDifettatiPerLinea = [("linea1","1/1/2000",5),("linea1",2/1/2000,6),("linea2",3/1/2000,3),("linea1",4/1/2000,5), ("linea3",1/1/2000,4),("linea2",2/1/2000,9),("linea3",3/1/2000,-1),("linea2",4/1/2000,9), ("linea2",1/1/2000,10),("linea3",2/1/2000,12),(Roma,3/1/2000,1),("linea3",4/1/2000,16)]
    Scritto così non potrà mai funzionare niente... Le date vanno tra apici (altrimenti vengono interpretate come due divisioni), c'è un valore negativo tra i prodotti difettosi (che senso ha?), c'è una 'Roma' senza apici (secondo me però è 'linea1', hai usato un ocr?)...
Devi accedere o registrarti per scrivere nel forum
5 risposte