I migliori prodotti

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 il nostro corso 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

Corso in diretta su Python

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