[Python] Dove sbaglio?

Carpediem i.carpediem a tiscali.it
Gio 30 Apr 2020 18:18:52 CEST


Il 30/04/2020 15:05, Alessandro T. ha scritto:
> Il 30/04/20 01:41, Marco Beri ha scritto:
>> On Thu, Apr 30, 2020 at 1:16 AM Carpediem <i.carpediem a tiscali.it 
>> <mailto:i.carpediem a tiscali.it>> wrote:
>>
>>     Un saluto a tutti e un grazie anticipato al volenteroso che avrà
>>     avuto la pazienza e la capacità di darmi una soluzione.
>>
>> Stavo cercando di darti una mano ma poi ho realizzato lo scopo 
>> (credo) che c'è dietro al tuo script.
>>
>> Siccome da giovane sono già passato da questa illusione ti do questo 
>> suggerimento:
>>
>> https://www.frasicelebri.it/frase/ii-lotto-e-la-tassa-degli-imbecilli/
>>
>>
>> Lascia perdere, le palline non hanno memoria.
>>
>> Ciao.
>> Marco.
>>
>
> Concordo.
>
> Per la soluzione ti suggerisco di guardare dict(), zip() e sorted(); 
> con una sola linea di codice risolvi il problema.
> Nel merito: hai un ciclo `while True` senza alcuna clausola d'uscita.
> Suggerimento: usa etichette più concise, ne beneficerà la lettura.
>
> Ciao
>
Grazie Alessandro. Mi hai fatto notare l'assenza dell'istruzione break e 
ora che l'ho inserita, il programma termina la sua esecuzione.

Purtroppo, non mi restituisce ciò che mi aspetto e continuo a non capire 
perchè. L'ordinamento che cerco, è in

relazione con l'indice dei numeri della lista di riferimento e 
utilizzare il metodo sorted() per quel che ho visto, o compreso, non mi 
è di aiuto.

Partendo da questo:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]

[22, 0, 18, 34, 20, 7, 2, 1, 30, 22, 55, 47, 53, 49, 52, 38, 12, 41, 29, 
5, 11, 44, 26, 33, 40, 13, 50, 39, 4, 21, 45, 3, 53, 32, 6, 25, 55]

volevo ottenere questo:

[10, 36, 12, 32, .............]

[55, 55, 53, 53, 52, ......]

e invece mi viene restituito questo:

[10, 1, 12, 28, 14, 26, 13, 11, 30, 21, 17, 24, 27, 15, 3, 23, 33, 8, 
18, 22, 35, 0, 21, 29, 4, 2, 25, 16, 20, 5, 34, 19, 28, 31, 6, 7, 1]
[55, 55, 53, 53, 52, 50, 49, 47, 45, 44, 41, 40, 39, 38, 34, 33, 32, 30, 
29, 26, 25, 22, 22, 21, 20, 18, 13, 12, 11, 7, 6, 5, 4, 3, 2, 1, 0]

In pratica, come se a comportarsi diversamente dal previsto sia il ciclo 
for. In realtà sono convinto che per le limitate conoscenze che ho

del linguaggio, questo sia comunque l'approccio giusto e sento di essere 
vicino alla soluzione ma mi sta sfuggendo qualcosa di stupido

(sul tipo dell'assenza dell'istruzione break) ma non individuo questo 
qualcosa. Il ciclo for, nel suo secondo passaggio, giunto a verificare 
l'ultimo indice (il 37 che corrisponde

al numero 55) avendo tra l'altro trovato corrispondenza con il numero 
cercato, dovrebbe inserire il numero 36 con indice 1 nella lista che si 
sta formando ed interrompersi

e invece mi inserisce il numero 1 senza apparente giustificazione.

Per le etichette hai pienamente ragione: nello scrivere il codice, mi 
sono incasinato da solo.




Maggiori informazioni sulla lista Python