2.5 Entrada i eixida en Python

Quan programem, necessitem mostrar informació i demanar dades a l’usuari. Això és el que anomenem eixida (mostrar) i entrada (llegir). En Python utilitzarem sobretot dues funcions:

  • print() → mostra informació per pantalla
  • input() → demana dades a l’usuari

1. Mostrar informació amb print()

La funció print() mostra per pantalla missatges, variables, operacions o una combinació de totes.

Exemple bàsic

print("Hola món")

Mostrar variables

nom = "Anna"
print("Hola", nom)

En aquest cas, print() separa automàticament els elements amb un espai.


1.1. Canviar el separador: sep

Quan cridem print() amb diversos elements, Python els separa per defecte amb un espai:

print(1, 2, 3)   # 1 2 3

Amb el paràmetre sep podem decidir quin separador volem utilitzar:

print(2, 4, 6, sep="-")         # 2-4-6
print("a", "b", "c", sep=" | ") # a | b | c

Això és útil quan volem donar format a la informació (per exemple, llistes, dates o codis) sense haver de concatenar textos manualment.


1.2. Evitar el salt de línia: end

Per defecte, cada vegada que utilitzem print(), Python afegeix un salt de línia al final. Això vol dir que el següent print() sempre començarà en una línia nova:

print("Hola")
print("món")

Eixida:

Hola
món

Si volem evitar aquest comportament i continuar escrivint en la mateixa línia, podem utilitzar el paràmetre end, que indica què volem que es pose al final del print().

print("Hola", end=" ")
print("món")

Eixida:

Hola món

En este exemple hem substituït el salt de línia per un espai " ". Podem posar qualsevol cosa en end: un guió, una coma, un text o fins i tot res.

Altres exemples útils:

print("A", end="-")
print("B", end="-")
print("C")

Eixida:

A-B-C

Este comportament és útil quan volem construir una línia a poc a poc, mostrar menús, animacions senzilles o imprimir dades en format controlat.


1.3. Intercalar variables en un text: f-strings

Quan volem escriure un text que incloga variables, la manera més senzilla i llegible és utilitzar f-strings. Una f-string és simplement una cadena que comença amb una f, i que permet posar variables dins de {}.

nom = "Pau"
edat = 16
print(f"{nom}{edat} anys")

Eixida:

Pau té 16 anys

Exemple amb operacions internes

Podem fer càlculs directament dins del text:

a = 5
b = 3
print(f"La suma de {a} i {b} és {a + b}")

Eixida:

La suma de 5 i 3 és 8

IMPORTANT: Dins d’una f-string, Python avaluarà qualsevol expressió entre {} abans de construir el text.


2. Demanar informació amb input()

input() mostra un text i espera que l’usuari escriga alguna cosa i preme Enter.

nom = input("Com et dius? ")
print("Encantat,", nom)

En aquest exemple, input() mostra el missatge “Com et dius? “ i espera que l’usuari escriga el seu nom. Quan l’usuari prem Enter, el text que ha escrit es guarda a la variable nom.

IMPORTANT!!: input() sempre retorna un text (str), encara que escrigues números.


2.1. Convertir el resultat

La funció input() sempre retorna un text, encara que l’usuari escriga un número. Això vol dir que, si escrius “18”, Python rep "18" (una cadena), no 18 (un enter).

Per tant, per fer operacions matemàtiques:

  • primer demanem el valor amb input()
  • després convertim el text a número amb int() o float()

Exemple bàsic amb enters

edat = int(input("Quants anys tens? "))
print("L'any que ve tindràs", edat + 1)

Eixida (si escrius 17):

L'any que ve tindràs 18

Exemple del que NO es pot fer

edat = input("Edat: ")
print(edat + 1)   # ERROR!

Error:

TypeError: can only concatenate str (not "int") to str

Exemple amb decimals: usar float()

nota = float(input("Nota (per exemple 7.5): "))
print("Has tret un", nota)

Eixida:

Has tret un 7.5

Exemple útil combinant conversió i f-string

any_naixement = int(input("Any de naixement: "))
any_actual = 2025

print(f"Tens {any_actual - any_naixement} anys.")

Eixida (si escrius 2008):

Tens 17 anys.

En resum:

Funció Per a què s’utilitza
int() Convertir text a enter
float() Convertir text a decimal
str() Convertir un valor a text

2.2. input() sense missatge i amb .strip()

A vegades volem llegir simplement el que escriu l’usuari:

text = input()

I .strip() és útil per eliminar espais sobrants:

nom = input("Nom: ").strip()

3. Exemples complets per a classe

3.1. Calculadora simple

x = float(input("Número 1: "))
y = float(input("Número 2: "))

print(f"Suma: {x + y}")
print(f"Resta: {x - y}")
print(f"Multiplicació: {x * y}")
print(f"Divisió: {x / y}")

3.2. Missatge personalitzat

nom = input("Com et dius? ")
any_naixement = int(input("Any de naixement: "))

any_actual = 2025
edat = any_actual - any_naixement

print(f"Hola {nom}, tens {edat} anys.")

4. Errors habituals amb print() i input()

Coneixer-los ajuda a evitar molts problemes.


4.1. Sumar text i número

edat = input("Edat: ")
print("Any que ve tindràs " + edat + 1)  # ERROR

Solució:

edat = int(input("Edat: "))
print(f"L'any que ve tindràs {edat + 1}")

4.2. Oblidar parèntesis

print "Hola"     # Incorrecte
nom = input "Nom: "

Correcte:

print("Hola")
nom = input("Nom: ")

4.3. No convertir a decimal

nota = int(input("Nota: "))   # Si escrius 7.5 → ERROR

Correcte:

nota = float(input("Nota: "))

4.4. Intentar operar sense convertir

a = input("Número: ")
b = input("Número: ")
print(a * b)  # ERROR

Correcte:

a = int(input("Número: "))
b = int(input("Número: "))
print(a * b)

4.5. No deixar espai en el missatge

nom = input("Com et dius?")

Correcte:

nom = input("Com et dius? ")

4.6. No utilitzar f-strings quan seria útil

print("Hola", nom, "tens", edat, "anys")

Millor:

print(f"Hola {nom}, tens {edat} anys")

4.7. Confusions amb sep i end

print("A", "B", "C", sep=" | ", end=" -> ")
print("D")

Eixida:

A | B | C -> D

4.8. Escriure int(input) sense parèntesis

Incorrecte:

edat = int(input)

Correcte:

edat = int(input("Edat: "))

4.9. Concatenació amb + quan no toca

Incorrecte:

print("La suma és " + a + b)

Correcte:

print("La suma és", a + b)

o:

print(f"La suma és {a + b}")

4.10. Cometes mal tancades

Incorrecte:

print("Hola món')

Correcte:

print("Hola món")
print('Hola món')

4.11. SyntaxError (error de sintaxi)

Es produeix quan Python troba alguna cosa que no pot interpretar perquè no segueix les regles del llenguatge.

Exemples típics:

if x > 5
    print("Hola")

Error:

SyntaxError: expected ':'

O cometes mal posades:

print("Hola)

4.12. ValueError (valor no convertible)

Succeeix quan intentem convertir un text a número, però el text no és un número real.

edat = int("hola")   # ERROR

Error:

ValueError: invalid literal for int()

És un dels errors més freqüents amb input().


5. Resum d’entrada i eixida

Element Què fa Exemple Nota
print() Mostra informació print("Hola") Salt de línia per defecte
sep Canvia separador print(1, 2, sep="-") No modifica el final
end Canvia final print("Hola", end=" ") Evita el salt
f-strings Mostrar variables dins del text f"{nom} té {edat} anys" Clar i modern
input() Demana informació input("Nom: ") Sempre retorna text
int() Text → enter int("5") Necessari per sumar
float() Text → decimal float("3.5") Usa punt
str() Valor → text str(20) Per concatenar

5.2. Miniexemples

Vols fer…? Usa…
Demanar un nom input("Nom: ")
Demanar un enter int(input("Número: "))
Demanar un decimal float(input("Nota: "))
Mostrar text i variable print("Hola", nom)
Mostrar formatat print(f"{nom} té {edat} anys")
Mostrar sense salt print("Hola", end="")