In questa lezione propongo un esercizio che utilizza ancora il metodo insert di Python.
Insert Python – Primo esercizio
Inserire 20 numeri random da 50 a 150 in testa alla lista, con il metodo insert di Python. Visualizzare con un altro ciclo gli elementi. Dopo, modificare ciascun elemento, sottraendo a ciascun numero la somma delle sue cifre. Infine visualizzare con un altro ciclo la lista modificata.
Cioè se ad esempio ho la seguente lista: casuale [50,55,80,90….]
Calcolo dunque la somma delle cifre per ciascun numero:
50: la somma delle cifre è 5;
55: la somma delle cifre è 10;
80: la somma delle cifre è 8;
90: la somma delle cifre è 9;
ecc…
Quindi la nuova lista al termine della modifica conterrà i seguenti elementi: casuale[45,45,72,81,….].
Procedimento
Innanzitutto popolo la lista con dei numeri random compresi nell’intervallo [50,150] utilizzando il metodo insert di Python.
Dopo visualizzo gli elementi inseriti e trovo la somma delle cifre di ciascun numero. Per fare ciò, in definitiva, devo creare un algoritmo che, ad una ad una, riesca a trovare le cifre di ciascun numero e le aggiunga ad una variabile somma.
Un procedimento potrebbe essere quello di dividere il numero per 10 e quindi sommare i resti.
Facciamo degli esempi:
somma=0
50:10=5 resto 0, somma=0+0=0
5:10=0 resto 5, somma=0+5=5
Quindi la somma totale delle cifre è 5.
somma=0
55:10=5 resto 5, somma=0+5=5
5:10=0 resto 5, somma=5+5=10
La somma totale delle cifre vale 10.
somma=0
80:10=8 resto 0, somma=0+0=0
8:10=0 resto 8, somma=0+8=8
ecc…
Come potete notare la variabile somma deve essere inizializzata a zero per ciascun numero da valutare.
Ciascun totale deve essere poi sottratto al numero iniziale, di cui occorre fare una copia temporanea, in quanto al termine dell’operazione il suo valore risulterà modificato.
Ecco dunque una possibile implementazione dell’algoritmo proposto che utilizza il metodo insert di Python:
from random import randint
n = 2
casuale = []
for i in range(n):
numero = randint(100,1000)
casuale.insert(0,numero)
for i in range(n):
print('Elemento in posizione:', i, 'vale', casuale[i])
for i in range(n):
s = 0
temp = casuale[i] #faccio una copia del numero
while casuale[i]>0:
s += casuale[i]%10
casuale[i] //= 10
casuale[i] = temp-s
for i in range(n):
print('Elemento in posizione:', i, 'vale', casuale[i])
Prova nell’editor:
Alcuni link utili
Indice tutorial sul linguaggio Python
1 – Introduzione al linguaggio Python
2 – Le variabili
3 – Operatori aritmetici e di assegnazione
4 – Stringhe
5 – Casting
6 – Input e print
8 – Errori in Python
9 – Script Python
10 – Scambio di variabili