Realizzeremo in questo tutorial il gioco indovina il numero in Python, anche conosciuto come giochino alto-basso.

Immaginiamo cioè che il calcolatore pensi un numero in un determinato intervallo e noi dobbiamo provare ad indovinarlo.



Risoluzione del gioco indovina il numero in Python

Indovinare un numero compreso tra 1 e 100, con un massimo però 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.



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.



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:

print(‘Più basso’)

if x!=n:

print(‘Mi spiace, hai esaurito i tentativi a disposizione, il numero era’, n)

Sfruttando quanto detto nella precedente lezione al posto di if x!=n si può mettere l’else:

else:

print(‘Mi spiace, hai esaurito i tentativi a disposizione, il numero era’, n)

Infatti l’else viene eseguito solo se non si ha l’uscita dal break, cioè se il numero non è stato indovinato.

Terza soluzione con il ciclo indefinito

In quest’ultimo esempio non stabiliamo un numero predefinito di tentativi ma usciamo dal ciclo solo dopo aver indovinato il numero.



import random

n=random.randrange(1,101)

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’)

Come potete vedere ci possono essere vari modi per implementare il gioco indovina il numero in Python. Proponete pure la vostra soluzione nei commenti sotto.



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

7 – Primi esercizi in python

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