Questo esercizio chiede di risolvere il problema di mettere in ordine tre numeri: vogliamo trovare un modo di chiedere al calcolatore di ordinare 3 numeri scelti dall’utente. come procedere?
Dunque, sicuramente il primo passo è chiedere i tre numeri all’utente, quindi scriviamo un messaggio di “benvenuto” e poi facciamo la richiesta. I numeri decidiamo che possono anche essere con cifre decimali (tipo float).
Quindi possiamo scrivere:
print(“Ordine decrescente di 3 numeri”)
n1=float(input(“Inserisci primo numero: “))
n2=float(input(“Inserisci secondo numero: “))
n3=float(input(“Inserisci terzo numero: “))
poi ricapitolo l’elenco dei numeri con:
print(“\nValori iniziali: “, n1,n2,n3)
A questo punto devo escogitare un modo per far controllare al computer il più grande, il medio e il più piccolo numero e poi metterli in ordine. Come procedere?
Un’idea è quella di usare il così detto “ordinamento a bolla”: si tratta di cercare il numero più grande e poi metterlo al primo posto, alterando l’ordine originale. Primo controllo il primo col secondo e se il caso li scambio, poi il primo col terzo e se è il caso li scambio. Alla fine avrò che il primo numero è anche il più grande.
- sequenza originale 1,2,3
- primo scambio 2,1,3
- secondo scambio 3,1,2
Ora sono sicuro che al primo posto c’è il numero più grande ma non ho fatto nulla per controllare il secondo ed il terzo numero, quindi l’ultima cosa da fare è proprio scambiarli se il secondo è più piccolo del terzo.
- terzo scambio 3,2,1
Questo mi porta ad ottenere la sequenza corretta.
Piccolo problema ulteriore: come faccio a scambiare il valore di due variabili? Mi spiego, se
a=1 e b=2
e voglio scambiarli come faccio? Se procedo scrivendo a=b e poi b=a lo scambio non avviene correttamente ed avrò :
a=b=2 e b=a=2
in quanto, una volta modificata la variabile a, il vecchio valore si è perso e non posso più inserirlo in b.
Pertanto la procedura corretta richiede l’uso di una terza variabile detta “temporanea” o “tampone” in questo modo:
- temp=a
- a=b
- b=temp
Questo produce il risultato corretto e quindi il programma completo è allora questo:

Per evitare di scrivere 3 volte l’algoritmo dello scambio, possiamo definire una funzione scambio in questo modo:
def scambio(a, b):
“””Restituisce i due valori nell’ordine invertito.”””
return b, a
Procedendo in questo modo il programma finale è il seguente:

N.B. Nel primo esempio si è utilizzato “eval” per ottenere dal dato in input un tipo float. tuttavia “eval” serve a restituire un tipo di dato “valido” mentre con “float” si è più precisi e si chiede proprio un numero reale.
Infine, per provare il codice Python potete installare ed utilizzare l’IDE chiamato “THONNY” dal sito https://thonny.org/
Questo è il risultato finale:
