Seccions:
- Per què començar amb un joc tan simple
- La idea del joc (regles clares)
- El primer error habitual (inputs buits / bucle infinit)
whilecom a motor del joc- Comptar intents i donar feedback
- Què has après realment (encara que sembli “simple”)
Quan comences a programar, sovint els primers exercicis semblen artificials: sumar números, imprimir frases, repetir patrons…
Però hi ha un punt d’inflexió molt clar: quan escrius un petit joc i veus que “passa alguna cosa”.
Aquest post explica com un joc aparentment senzill —endevinar un nombre— es converteix en una excusa perfecta per entendre conceptes clau de Python sense adonar-te’n.
Per què començar amb un joc tan simple
Un joc petit té tres avantatges enormes per aprendre:
- Té regles clares
- Té interacció amb l’usuari
- Té un final recognoscible (guanyar o perdre)
A diferència d’un exercici abstracte, un joc ens força a pensar:
què passa abans, què passa després, i què ha de repetir-se fins que alguna cosa canviï.
La idea del joc (regles clares)
La idea és molt senzilla:
- El programa tria un nombre secret.
- L’usuari intenta endevinar-lo.
- El programa diu si el nombre és massa gran, massa petit o correcte.
- El joc continua fins que l’usuari encerta.
Amb quatre frases ja tenim:
- entrada (
input) - comparacions (
<,>,==) - repetició (
while) - i una condició de sortida
Sense dir-ho explícitament, ja estem treballant amb lògica de control.
El primer error habitual (inputs buits / bucle infinit)
Aquí apareix el primer obstacle real. Dos errors molt comuns:
1️⃣ L’input no és un número
input() sempre retorna text.
Si no el convertim a int, el programa fallarà o es comportarà de manera estranya.
Això en ensenya una lliçó clau:
les dades tenen tipus, i cal controlar-los.
2️⃣ El bucle no s’acaba mai
Si el while no té una condició clara de sortida, el joc queda atrapat.
Aquest moment és molt revelador:
entenem que el programa no “sap” quan parar, si no li ho diem explícitament.
while com a motor del joc
El while és literalment el cor del joc.
Mentalment, el que estem dient és:
mentre no hagis encertat, continua jugant.
Això és molt diferent d’un for:
- no saps quants intents faràs
- no hi ha un nombre fix de repeticions
Aquí aprenem que:
- un bucle no sempre serveix per comptar
- sovint serveix per esperar que passi una condició
Aquesta idea reapareixerà constantment més endavant (validacions, menús, jocs, processos interactius).
Comptar intents i donar feedback
Un petit detall que canvia molt el joc: comptar els intents.
Afegir un comptador et permet:
- informar l’usuari
- millorar l’experiència
- entendre com funciona una variable que canvia dins d’un bucle
I el feedback (“massa gran”, “massa petit”) introdueix una altra idea important:
el programa respon de manera diferent segons l’estat actual.
Això és el primer pas cap a pensar en termes de lògica condicional real, no només exercicis d’if.
Què hem après realment
Encara que el joc sigui curt, aquí ja hem treballat:
- ✔️ entrada d’usuari (
input) - ✔️ conversió de tipus (
int) - ✔️ condicions (
if / elif / else) - ✔️ bucles indeterminats (
while) - ✔️ control d’errors conceptuals
- ✔️ estat del programa (encertat / no encertat)
- ✔️ feedback a l’usuari
Al següent post, el joc creix una mica més: afegirem límits, validacions i estructura, i veurem com un script comença a semblar-se a un petit projecte.
El primer joc en Python — codi comentat pas a pas
A continuació, el codi complet del joc Endevina el nombre, comentat línia a línia. L’objectiu no és només que funcioni, sinó entendre per què cada part existeix.
import random
# El programa tria un nombre secret entre 1 i 100
# randint(a, b) retorna un enter entre a i b (inclosos)
nombre_secret = random.randint(1, 100)
# Inicialitzem el comptador d'intents
intents = 0
# Variable de control del joc:
# mentre sigui False, el joc continuarà
encertat = False
print("He pensat un nombre entre 1 i 100.")
print("Intenta endevinar-lo!")
# El bucle principal del joc
# Es repetirà fins que encertat sigui True
while not encertat:
# input() sempre retorna text (str)
entrada = input("Introdueix un nombre: ")
# Cas habitual: l'usuari prem Enter sense escriure res
if entrada == "":
print("No has escrit res. Torna-ho a provar.")
continue
# Intentem convertir l'entrada a enter
try:
nombre = int(entrada)
except ValueError:
# Si no és un número vàlid, evitem que el programa falli
print("Això no és un nombre vàlid.")
continue
# Comptem un intent correcte
intents += 1
# Compareu el nombre amb el secret
if nombre < nombre_secret:
print("Massa petit.")
elif nombre > nombre_secret:
print("Massa gran.")
else:
# Cas final: l'usuari ha encertat
encertat = True
print(f"Correcte! Has encertat el nombre en {intents} intents.")Aquest petit joc ja incorpora conceptes fonamentals de programació: entrada d’usuari, control d’errors, bucles indeterminats, condicionals i estat del programa.