In questo tutorial realizzeremo il gioco indovina il numero in Python, conosciuto anche come il giochino alto-basso.
Immaginiamo dunque che il calcolatore pensi un numero in un determinato intervallo e noi dobbiamo provare ad indovinarlo.
Risoluzione del gioco indovina numero in Python
Indovinare un numero compreso tra 1 e 100, con un massimo di 10 tentativi.
Funzione randrange()
Innanzitutto dobbiamo generare un numero random.
Per generare un numero random in python possiamo utilizzare il metodo randrange(), che genera un numero casuale in un intervallo specificato.
Ecco dunque la sintassi:
random.randrange(inizio, fine+1, step) #step è opzionale
Cioè ad esempio se vogliamo un numero compreso tra 2 e 7 dobbiamo impostare randrange (2,8).
Attenzione però, per utilizzare questo metodo dobbiamo importare la libreria che lo contiene.
Utilizziamo quindi questo comando:
import random
Pertanto, dopo aver generato il numero random, possiamo continuare ad implementare il nostro gioco.
Impostiamo il numero massimo di tentativi a 10 utilizzando, come già spiegato, la funzione range().
Dopo facciamo inserire in input un numero compreso tra 1 e 100 e controlliamo con l’istruzione if se questo numero è uguale a quello pensato dal computer. Se è uguale allora diamo in output il messaggio ‘indovinato’ e usciamo dal programma con la funzione break.
Altrimenti controlliamo se abbiamo ancora tentativi a disposizione. Se ne abbiamo, controlliamo anche se il numero che abbiamo inserito è minore di quello pensato dal computer. Se è così visualizziamo in output il messaggio ‘più alto‘ per suggerire di inserire un numero più alto.
Viceversa se invece il numero è maggiore del numero pensato dal computer diamo il messaggio ‘più basso‘ per suggerire di inserire un numero più basso.
Infine se abbiamo esaurito i tentativi avvisiamo l’utente con un messaggio in output.
Gioco indovina numero in Python
Ecco dunque il codice completo:
import random # Importiamo la libreria
n = random.randrange(1, 101) # Generiamo un numero random tra 1 e 100
for i in range(10):
x = int(input('Inserisci un numero compreso tra 1 e 100: '))
if x == n: # Se ha indovinato
print('Hai indovinato al tentativo numero:', i + 1)
break # Usciamo dal programma
elif i < 9: # Altrimenti se siamo ancora nel range
if x < n: # Valutiamo se il numero è più basso di quello pensato dal computer
print('Inserisci un numero più alto')
else: # Valutiamo se il numero è più alto di quello pensato dal computer
print('Inserisci un numero più basso')
else:
print('Mi spiace, hai esaurito i tentativi a disposizione')
N.B. Facciamo il controllo se i < 9 in quanto i diventa uguale a 9 solo dopo che inserisco l’ultimo numero.
Migliora le tue capacità di programmazione Python seguendo i nostri corsi in diretta!
Seconda soluzione
Un’altra possibile implementazione può essere ad esempio questa:
import random # Importiamo la libreria
n = random.randrange(1, 101) # Generiamo un numero random tra 1 e 100
for i in range(10):
x = int(input('Inserisci un numero: '))
if x == n: # Se ha indovinato
print('Hai indovinato al tentativo numero:', i + 1)
break # Usciamo dal ciclo
elif x < n: # Se il numero è più basso di quello pensato dal computer
print('Più alto')
else: # Se il numero è più alto di quello pensato dal computer
print('Più basso')
if x != n:
print('Mi spiace, hai esaurito i tentativi a disposizione. Il numero era', n)
Il codice utilizza un ciclo for
per eseguire un massimo di 10 tentativi e utilizza le istruzioni condizionali if
, elif
e else
per gestire diversi scenari in base all’input dell’utente rispetto al numero generato casualmente. Alla fine verifichiamo if x != n:
: Questa riga verifica se l’ultimo numero inserito dall’utente (x
) è diverso dal numero generato casualmente (n
). Se l’utente non ha indovinato correttamente il numero, questa condizione sarà vera.
Potremmo ottimizzare la precedente soluzione utilizzando il ciclo for else:
import random # Importiamo la libreria
n = random.randrange(1, 101) # Generiamo un numero random tra 1 e 100
for i in range(10):
x = int(input('Inserisci un numero: '))
if x == n: # Se ha indovinato
print('Hai indovinato al tentativo numero:', i + 1)
break # Usciamo dal ciclo
elif x < n: # Se il numero è più basso di quello pensato dal computer
print('Più alto')
else: # Se il numero è più alto di quello pensato dal computer
print('Più basso')
else:
print('Mi spiace, hai esaurito i tentativi a disposizione. Il numero era', n)
In questo codice, abbiamo inserito il blocco else
alla fine del ciclo for
. Questo blocco verrà eseguito solo se il ciclo viene completato senza interruzioni, cioè se il numero non viene indovinato entro i primi 10 tentativi.
Terza soluzione utilizzando un ciclo indefinito
In quest’ultimo esempio non stabiliamo un numero predefinito di tentativi ma usciamo dal ciclo solo dopo aver indovinato il numero. Quindi è una variante dell’esercizio proposto.
import random # Importiamo la libreria
n = random.randint(1, 101) # Generiamo un numero random tra 1 e 100
indovinato = 0
while indovinato == 0:
x = int(input('Inserisci un numero: '))
if x == n:
print('Hai indovinato')
indovinato = 1
elif x < n:
print('Più alto')
else:
print('Più basso')
In questo codice, si utilizza un ciclo while
per chiedere all’utente di indovinare un numero generato casualmente tra 1 e 100. Finché l’utente non indovina correttamente il numero, il programma fornisce suggerimenti (“Più alto” o “Più basso”) in base al numero inserito dall’utente. Una volta che l’utente indovina il numero, il ciclo while
termina, grazie al fatto che la variabile indovinato viene posta a 1, ed il programma stampa “Hai indovinato”.
Conclusione
In questo articolo, abbiamo esaminato un semplice ma divertente gioco che consente di indovinare un numero, implementato in Python. Utilizzando la libreria random
e un ciclo while
, abbiamo creato un programma che genera casualmente un numero tra 1 e 100 e chiede all’utente di indovinare quale sia il numero.
Questo semplice esempio dimostra l’uso dei cicli in Python per implementare giochi interattivi e coinvolgenti. Inoltre, illustra l’uso della libreria random
per generare numeri casuali, una funzionalità utile in molti contesti di programmazione.
Speriamo che questo articolo abbia fornito una panoramica chiara e accessibile di come implementare un gioco di indovinare il numero in Python e abbia stimolato la tua curiosità per ulteriori esplorazioni nel vasto mondo della programmazione.
Se volete approfondire il linguaggio Python, vi suggerisco di leggere il libro “50 Algoritmi per imparare Python”, che vi guiderà, attraverso esempi approfonditi, all’apprendimento di uno dei linguaggi più utilizzati!
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 in python
11 – Libreria math
12 – Operatori di confronto e booleani in python
13 – If else in python
14 – If elif else
15 – If annidati