Llegint dades de l'usuari: input()
A diferència de print(), que mostra dades, input() en demana a l'usuari. Sempre retorna una cadena de text (str), encara que l'usuari escrigui números.
Exemple
edat = int(input("Quants anys tens? "))
print(f"L'any que ve en tindràs {edat + 1}")
input(...) mostra el text entre parèntesis i espera que l'usuari escrigui alguna cosa i premi Intro. El resultat és sempre str; per fer-hi operacions numèriques cal envoltar-lo amb int() (nombre enter) o float() (nombre decimal).
El parany de la conversió
Si t'oblides de convertir el resultat d'input(), Python no es queixa — simplement fa una altra cosa que la que volies.
El problema
a = input("Primer número: ") # l'usuari escriu 5
b = input("Segon número: ") # l'usuari escriu 3
print(a + b) # imprimeix 53, no 8!
Com a i b són str, l'operador + no suma — concatena els textos: "5" + "3" dona "53".
La solució
a = int(input("Primer número: "))
b = int(input("Segon número: "))
print(a + b) # ara sí: 8
Operadors aritmètics i de comparació
Els mateixos conceptes que en C, amb una notació una mica diferent i un parell d'afegits propis de Python.
| Operador | Fa |
|---|---|
+ - * | suma, resta, producte |
/ | divisió real (sempre decimal) |
// | divisió entera |
% | residu de la divisió entera |
** | potència (no cal cap funció pow()) |
< > <= >= == != | comparadors, igual que en C |
Un extra de Python: pots encadenar comparacions directament, tal com ho escriuries en matemàtiques: 0 <= nota <= 10 comprova les dues condicions alhora. En C caldria escriure-ho amb un &&: nota >= 0 && nota <= 10.
Assignació múltiple i intercanvi de variables
Python permet assignar diverses variables en una sola línia, i això obre la porta a un truc molt útil.
Assignació múltiple
a, b, c = 1, 2, 3 print(a, b, c)
Intercanviar dues variables
a, b = b, a
Aquesta única línia intercanvia els valors de a i b sense necessitar cap variable temporal. Python primer calcula la parella (b, a) sencera, i després l'assigna. En C caldria una tercera variable per no perdre cap valor pel camí.
El mòdul math i l'operador **
Per a arrels, logaritmes i altres funcions matemàtiques cal importar el mòdul math. Per elevar a una potència, en canvi, ja tens l'operador ** integrat al llenguatge.
Exemple
import math
costat = 5.0
diagonal = math.sqrt(costat ** 2 + costat ** 2)
print(f"La diagonal val {diagonal:.2f}")
A diferència de C, on calia pow(base, exponent) de <math.h>, en Python base ** exponent ja funciona sense importar res. Per sqrt(), log() i similars sí que cal import math.
Format de sortida amb f-strings
Una f-string és una cadena precedida per f on pots ficar variables directament entre claus { }, amb format opcional.
pi = 3.14159265
print(f"Pi val {pi:.2f}") # Pi val 3.14
Tot el que va després dels dos punts dins les claus és l'especificador de format.
Taula de referència: especificadors dins f-strings
| Codi | Efecte |
|---|---|
{x:.2f} | decimal amb 2 xifres de precisió |
{x:5d} | enter, amplada mínima de 5 caràcters |
{x:>10} | alineat a la dreta en 10 caràcters |
{x:,.2f} | decimal amb separador de milers |
{x:.1%} | com a percentatge, amb 1 decimal |
bonus Altres maneres de formatar text
Les f-strings són les més modernes i les que farem servir en aquest curs, però et trobaràs les altres dues en codi més antic.
pi = 3.14159265
print("Pi val %.2f" % pi) # estil antic, semblant a printf de C
print("Pi val {:.2f}".format(pi)) # estil .format()
print(f"Pi val {pi:.2f}") # f-strings: la que fem servir aquí
Les tres línies mostren exactament el mateix resultat. L'especificador .2f és el mateix en totes tres.
Mira el programa executar-se pas a pas
Encara de dalt a baix, sense condicions ni bucles — però ara amb entrada de l'usuari simulada.
Entrada de dades
Sortida i format
Codi
Variables
| Nom | Valor |
|---|
Terminal
Exercicis
Aquí no hi ha solució ni comprovació automàtica: són per escriure i provar tu mateix.
1. Municipi i codi postal
Demana el nom d'un municipi, un caràcter qualsevol i el seu codi postal, i mostra les tres dades juntes en una sola línia.
char de C.2. Resistències en paral·lel
Calcula la resistència equivalent de dues resistències en paral·lel: Req = (R1 · R2) / (R1 + R2). Demana R1 i R2 com a float.
R1*R2/(R1+R2) no és el mateix que R1*R2/R1+R2.3. Fahrenheit a Celsius
Demana una temperatura en graus Fahrenheit i mostra l'equivalent en graus Celsius, amb la fórmula C = (F − 32) / 1.8.
input() sempre retorna text: caldrà float().4. Taxa Anual Equivalent (TAE)
Donat un interès nominal anual i (per exemple 0.05) i un nombre de pagaments n (per exemple 12), calcula la TAE amb la fórmula TAE = (1 + i/n)n − 1.
** ja eleva a una potència.5. Mitjana de tres nombres
Demana tres nombres reals i mostra'n la mitjana aritmètica.
input().split() i convertir-los amb un bucle o un a un; de moment fes-ho amb tres input() separats.6. Equació de segon grau
Demana els coeficients a, b i c d'una equació ax² + bx + c = 0 i calcula les seves dues solucions amb la fórmula general. Encara no cal comprovar si l'equació té solució real.
disc = b**2 - 4*a*cx1 = (-b + math.sqrt(disc)) / (2*a)x2 = (-b - math.sqrt(disc)) / (2*a)No t'oblidis del
import math al principi.