Tiza Paso a paso
Practicar →

Pensamiento Computacional · Unidad 1 — Algoritmos y programación

Tu primer programa

print() muestra cosas en pantalla. Con eso solo ya se puede escribir un programa, y sobre todo se puede espiar qué está pasando adentro de otro.

Practicar este tema →7 ejercicios que te corrigen paso a paso · gratis, sin cuenta

La explicación

La instrucción más útil de todas

print("¡Hola, mundo!")

Eso es un programa completo. print es una función: un bloque de trabajo ya hecho que vos usás poniendo su nombre y, entre paréntesis, lo que le querés dar.

Lo que va adentro de los paréntesis se llama argumento. Las comillas indican que es texto: sin ellas, Python buscaría una variable con ese nombre y se quejaría.

Varias cosas de una

print("Hola", "mundo")   →  Hola mundo
print("Edad:", 20)       →  Edad: 20

Separando con comas, print los muestra uno al lado del otro con un espacio en el medio, y no te obliga a que sean todos del mismo tipo. Eso lo hace mucho más cómodo que concatenar con +, que exige que todo sea texto.

Comentarios

# esto no se ejecuta, es para el que lee
print("Hola")  # también sirve al final de una línea

Todo lo que sigue a un # lo ignora Python. Sirve para explicar por qué hacés algo, no qué hacés: eso último ya se ve en el código.

print como herramienta de diagnóstico

Esto te va a salvar todo el cuatrimestre. Cuando un programa no hace lo que esperás, la forma más directa de averiguar por qué es meter prints en el medio para ver qué valen las variables en ese punto. No es hacer trampa: es exactamente lo que hace la traza que vas a ver en las animaciones de esta materia.

La indentación no es decoración

En Python, los espacios del principio de una línea definen la estructura. Lo que está indentado "adentro" de un if o de una función pertenece a ese bloque. En otros lenguajes eso se hace con llaves; acá, con espacios. Por eso un espacio de más rompe el programa, y por eso conviene dejar que el editor indente solo.

Los cuatro errores del primer día

Vas a ver estos cuatro muchísimo antes de ver cualquier otro. Lo importante no es evitarlos — es leer la última línea del mensaje, que dice el tipo de error y qué pasó:

SyntaxError: '(' was never closed
NameError: name 'mensaje' is not defined
IndentationError: expected an indented block
TypeError: can only concatenate str (not "int") to str
La diferencia que conviene tener clara desde el principio: el SyntaxError aparece antes de que el programa arranque, así que no se ejecuta ni la primera línea. El IndentationError también: es una variante del SyntaxError, y Python lo detecta al leer el archivo. Los otros dos aparecen mientras corre, así que todo lo que estaba antes ya pasó y ya imprimió. Si ves parte de la salida y después un error, el problema está en esa línea, no en las anteriores.
Un ejercicio resuelto, paso a paso

Escribir un programa que guarde un nombre y una edad, y los muestre en una línea.

nombre = "Ana"
edad = 20
print("Hola,", nombre, "- tenés", edad, "años")

Salida: Hola, Ana - tenés 20 años

Por qué con comas y no con +. Si escribieras print("tenés " + edad) te tiraría error, porque + no sabe mezclar texto con número. Con comas no hay problema: print se ocupa.

Si quisieras usar + sí o sí, habría que convertir:

print("tenés " + str(edad) + " años")

Control: fijate los espacios. Con comas, print pone uno solo entre cada cosa; con + tenés que escribirlos vos adentro de las comillas, y es el olvido más común (queda tenés20años).

Las tres formas de romperlo, y qué dice cada una.
print("Hola,", Nombre)     → NameError: name 'Nombre' is not defined
print("tenés " + edad)     → TypeError: can only concatenate str…
print("Hola,", nombre        → SyntaxError: '(' was never closed
Las tres tienen arreglo mecánico: la mayúscula de más, el str() que falta, el paréntesis sin cerrar. Ninguna es un problema de lógica, y por eso conviene aprender a leerlas rápido en vez de releer el programa entero.

Una variante que vale la pena probar. Si en vez de edad = 20 escribís edad = input("¿Qué edad tenés? "), el programa sigue funcionando con comas — pero edad ahora es texto, no número, porque input siempre devuelve texto. Mientras solo la imprimas no se nota nada; en el momento en que quieras hacer una cuenta con ella va a hacer falta int(edad). Es el tema de 2.2, y es de lo que más se tropieza en el primer parcial.

Y uno del nivel del parcial

Escribir un programa que pida el precio de un producto y un porcentaje de descuento, y muestre el precio final con dos decimales. Con 1500 y 20 tiene que decir exactamente: Precio final: $1200.00

Tres cosas por separado: leer los datos con el tipo correcto, hacer la cuenta, y darle formato a la salida. Cada una tiene su trampa.

1. Leer. input() siempre devuelve texto, aunque el usuario escriba un número. Si no se convierte, la cuenta falla o hace algo raro:

precio = float(input("Precio: "))
desc = float(input("Descuento en %: "))

Por qué float y no int. Un precio puede tener centavos, y un descuento puede ser 12,5 %. Con int el programa se rompe apenas alguien escriba 1500.50.

2. La cuenta. Hay dos formas y conviene la segunda:

final = precio - precio * desc / 100 # restando el descuento
final = precio * (1 - desc / 100) # pagando lo que queda

Las dos dan lo mismo, pero la segunda dice lo que uno piensa: "queda el 80 % del precio". Con descuentos encadenados (20 % y después 10 %) la segunda se extiende sola multiplicando por 0,8 y por 0,9; la primera se vuelve ilegible.

3. El formato, que es lo que el enunciado pide exacto. Sin formatear, Python muestra 1200.0, con un solo decimal, y eso no es lo pedido:

print("Precio final: $" + format(final, ".2f"))

El programa completo:

precio = float(input("Precio: "))
desc = float(input("Descuento en %: "))
final = precio * (1 - desc / 100)
print("Precio final: $" + format(final, ".2f"))

Las pruebas, con los casos que rompen:

(1500, 20) → Precio final: $1200.00   (el del enunciado)
(999, 0)   → Precio final: $999.00    (descuento cero)
(100, 33)  → Precio final: $67.00     (redondeo)
(100, 100) → Precio final: $0.00      (descuento total)

El control a mano: 1500 con 20 % de descuento es 1500 − 300 = 1200 ✓. Siempre conviene tener un caso resuelto de cabeza antes de correr el programa: si no, no hay con qué comparar.

Un detalle del punto y la coma. Python usa el punto como separador decimal, así que el usuario tiene que escribir 1500.50 y no 1500,50. Si el enunciado del parcial pide aceptar coma, hay que agregar .replace(",", ".") antes del float.

Dónde se pierde el punto: olvidar el float() alrededor del input(). El síntoma es un error que dice que no se puede multiplicar texto por un número, y es el error número uno de toda la materia.

Dónde se cae la mayoría

Hasta acá la explicación. La práctica es la otra mitad: 7 ejercicios de este tema, en cuatro niveles, que no te dicen sólo si está bien al final sino que te corrigen en cada paso y te explican por qué. Además trae una animación que muestra la idea en movimiento.

Practicar Tu primer programa →

Los otros temas de la unidad 1

Algoritmos y programación

Ver todos los temas de Pensamiento Computacional