Forum
>>
Principianti
>>
Funzione con ciclo for e condizioni.
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da antocruo |
2019-01-30 12:14:02 - Funzione con ciclo for e condizioni.
|
Ciao a tutti.
Devo creare una funzione che mi restituisca il valore massimo e il valore minimo di un esame, contenuto in una lista di tuple: es_svolti=[(cod_utente,cod_es,data_es,val_es)] es_svolti = [(23, '90.44.1', '12/12/2018', 20), (23, '90.33.5', '12/12/2018', 12), (13, '90.09.1', '12/12/2018', 52), (31, '90.09.1', '21/12/2018', 120), (34, '90.09.1', '21/12/2018', 2), (55, '90.44.1', '21/12/2018', 4, (13, '90.33.5', '21/12/2018', 70), (23, '90.09.1', '12/01/2019', 20), (12, '90.09.1', '10/01/2019', 80), (12, '90.33.5', '12/01/2019', 120), (55, '90.44.1', '12/01/2019', 3, (12, '90.09.1', '12/01/2019', 120)] La funzione è la seguente: def valori_min_max(es_svolti,cod_es): for i in es_svolti: if cod_es not in i: return None else: if i1==cod_es: valori=[] valori.append(i3) return min(valori),max(valori) Ecco cosa la funzione dovrebbe restituire: valori_min_max(es_svolti, '90.44.1') # risultato: (20, 4 valori_min_max(es_svolti, '90.44.5') # risultato: None valori_min_max(es_svolti, '90.09.1') # risultato: (2, 120) Ecco invece cosa mi restituisce: """ #risultato: (20, 20) """ #risultato: None """ #risultato: None Quindi prende in considerazione soltanto la prima tupla. Facendo delle prove nella shell invece mi accorgo che stampando i mi restituisce l'ultima tupla. Non capisco dove sta l'errore. Qualcuno potrebbe aiutarmi? Grazie. |
|
Scritto da stix77 |
2019-01-30 14:02:09 - Re: Funzione con ciclo for e condizioni.
|
io l'ho fatto così, può andare?
es_svolti = [(23, '90.44.1', '12/12/2018', 20), (23, '90.33.5', '12/12/2018', 12), (13, '90.09.1', '12/12/2018', 52),(31, '90.09.1', '21/12/2018', 120), (34, '90.09.1', '21/12/2018', 2), (55, '90.44.1', '21/12/2018', 4 8), (13, '90.33.5', '21/12/2018', 70), (23, '90.09.1', '12/01/2019', 20), (12, '90.09.1', '10/01/2019', 80),(12, '90.33.5', '12/01/2019', 120), (55, '90.44.1', '12/01/2019', 3 8), (12, '90.09.1', '12/01/2019', 120)] maxvalue = 0 minvalue = 120 for i in range(0,len(es_svolti)): temp = es_svolti if temp[ 3 ] >= maxvalue: maxvalue = temp[ 3 ] for i in range(0,len(es_svolti)): temp = es_svolti if temp[ 3 ] <= minvalue: minvalue = temp[ 3 ] print("voto massimo: " + str(maxvalue)) print("voto minimo: " + str(minvalue)) for i in range(0,len(es_svolti)): temp = es_svolti if temp[ 3 ] == maxvalue: print("voto massimo: " + str(es_svolti)) for i in range(0,len(es_svolti)): temp = es_svolti if temp[ 3 ] == minvalue: print("voto minimo: " + str(es_svolti)) l'ho strutturato in questa maniera: assegno due variabili temporanee di voto minimo e massimo nel primo ciclo for prendo in rassegna tutti i voti e memorizzo il valore massimo nel secondo ciclo for prendo in rassegna tutti i voti e memorizzo il valore minimo nel terzo ciclo for prendo il valore massimo e se corrisponde col voto nella tupla ne stampo le informazioni nel quarto ciclo for prendo il valore minimo e se corrisponde col voto nella tupla ne stampo le informazioni questo è l'output: voto massimo: 120 voto minimo: 2 voto massimo: (31, '90.09.1', '21/12/2018', 120) voto massimo: (12, '90.33.5', '12/01/2019', 120) voto massimo: (12, '90.09.1', '12/01/2019', 120) voto minimo: (34, '90.09.1', '21/12/2018', 2) --- Ultima modifica di stix77 in data 2019-01-30 14:03:11 --- |
|
Scritto da antocruo |
2019-01-30 15:59:39 - Re: Funzione con ciclo for e condizioni.
|
Ciao, ti ringrazio per la pronta risposta!
Purtroppo il codice che mi hai inviato restituisce un errore(TypeError: '>=' not supported between instances of 'tuple' and 'int') Inoltre preferirei non creare un codice molto diverso dal mio, ma capire dove sta l'errore che ho commesso. |
|
Scritto da antocruo |
2019-01-30 16:41:41 - Re: Funzione con ciclo for e condizioni.
|
L'ho corretta in questo modo.
Ma non riesco a far restituire "None" quando il cod_es non è presente nell'elenco. def valori_min_max(es_svolti,cod_es): valori=[] for i in es_svolti: if i1==cod_es: valori.append(i3) else: continue return min(valori),max(valori) |
|
Scritto da stix77 |
2019-01-30 17:05:50 - Re: Funzione con ciclo for e condizioni.
|
ciao, l'errore lo da perchè nel codice non so come mai sono saltate le parentesi quadre con l'indice del ciclo for
cioè ogni volta che vedi temp = es_svolti poi ci andrebbe attaccato l'indice cioè [ i ] |
Pagina: 1
Esegui il login per scrivere una risposta.