Forum
>>
Principianti
>>
Esercizio rompicapo Liste
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da matteofulciniti |
2018-08-30 14:54:01 - Esercizio rompicapo Liste
|
Salve a tutti.
Sono nuovo del forum, pertanto non so se è questo il luogo giusto dove poter postare domande su esercizi vari su python. Sto seguendo un corso universitario di informatica online, e tra i vari esercizi, ce n'è uno che mi ha completamente bloccato (causa anche la mia scarsa esperienza). L'esercizio è il seguente: 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] # # Soluzione in 10 righe Vi prego aiutatemi! Matteo. |
|
Scritto da ㎝ |
2018-08-30 16:20:15 - Re: Esercizio rompicapo Liste
|
cosa non ti riesce?
che logica abbozzeresti? THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝ |
|
Scritto da matteofulciniti |
2018-08-30 17:28:56 - Re: Esercizio rompicapo Liste
|
Avevo abbozzato una cosa del genere ma non funziona.
def estraiDieci(L): output = [] x = 0 #mi serve per tenere "fermo" l'elemento al quale sommo via via gli altri elementi della lista. while x <= len(Lista): #gli chiedo di iterare il ciclo finche il numero "fermo" al quale sommo tutti gli altri non arriva ad essere l'ultimo della lista for i in Lista: if i + Lista[x] == 10: output.append(Lista[x]) output.append(i) x += 1 #Qui ad esempio mi va in loop, probabilmente perchè il ciclo for finisce prima che x sia arrivata ad essere uguale a len(Lista)...ma non mi vengono in mente soluzioni alternative... return output[c'è un tasto apposta per il codice nella toolbar -- Nd㎝] --- Ultima modifica di matteofulciniti in data 2018-08-30 17:30:59 --- --- Ultima modifica di ㎝ in data 2018-08-30 17:47:04 --- |
|
Scritto da matteofulciniti |
2018-08-30 17:31:52 - Re: Esercizio rompicapo Liste
|
dove la x è in rosso, è perchè ci sono le parentesi quadre...non so perchè non le visualizza.
ah ovviamente ho indentato tutto correttamente, non come visualizzare qui. --- Ultima modifica di matteofulciniti in data 2018-08-30 17:32:26 --- |
|
Scritto da matteofulciniti |
2018-08-30 17:56:11 - Re: Esercizio rompicapo Liste
|
questo è un altro codice che forse mi avvicina un po' di piu al risultato...ma ripete troppe volte i numeri nella lista...
def EstraiDieci(L): output = [] for fisso in L: for i in L: if fisso + i == 10: output.append(fisso) output.append(i) return output |
|
Scritto da matteofulciniti |
2018-08-30 18:09:07 - Re: Esercizio rompicapo Liste
|
Ho trovato! mi serve un modo per far si che quando "fisso" è uguale, o meglio, nella stessa posizione di "i", si ignorino, ossia il ciclo for deve andare avanti senza considerare questa situazione....come faccio?
|
|
Scritto da ㎝ |
2018-08-30 18:34:01 - Re: Esercizio rompicapo Liste
|
io invece farei una copia della lista in ingresso, estrarrei il primo elemento e cercherei nel resto se c'è il complemento a 10; se c'è, lo elimini e aggiungi i due alla lista di output. E così via finché la lista non è vuota.
THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝ |
|
Scritto da matteofulciniti |
2018-08-30 19:18:39 - Re: Esercizio rompicapo Liste
|
Prima di leggere la tua risposta avevo fatto una cosa simile, ossia ho "svuotato" tramite la funzione remove. Ma l'ho fatto direttamente sulla lista principale, senza creare una copia.
def EstraiDieci(L): output = [] for fisso in L: print("fisso=",fisso) for i in L: print("i=",i) if fisso + i == 10: output.append(fisso) output.append(i) L.remove(i) L.remove(fisso) return output il risultato è che, ipotizzando la lista [3,5,7,5,2,8,11], mi da [3,7,5,5]...non capisco dove siano finiti 2 e 8! |
|
Scritto da matteofulciniti |
2018-08-30 19:34:11 - Re: Esercizio rompicapo Liste
|
TROVATOOOOO!!!
def EstraiDieci(L): output = [] for fisso in L: for i in L: if fisso + i == 10: output.append(fisso) output.append(i) L.remove(i) return output dopo un giorno di combattimenti... Ti ringrazio comunque per l'aiuto e per i suggerimenti! |
Pagina: 1
Esegui il login per scrivere una risposta.