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.
La explicación
La instrucción más útil de todas
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("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
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
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ó:
NameError: name 'mensaje' is not defined
IndentationError: expected an indented block
TypeError: can only concatenate str (not "int") to str
- SyntaxError — está mal escrito y Python ni siquiera lo pudo leer. Casi siempre es un paréntesis o una comilla sin cerrar. Las versiones actuales de Python te apuntan a la línea donde quedó abierto y te nombran el símbolo (
'(' was never closed): mirá el número de línea que dice el mensaje y buscá ese símbolo, no la línea de arriba ni la de abajo. - NameError — usaste un nombre que no existe. O nunca lo definiste, o lo escribiste distinto (
Mensajeno esmensaje), o te faltaron las comillas y Python leyó un texto como si fuera una variable. - IndentationError — abriste un bloque con dos puntos y la línea de abajo no quedó indentada.
- TypeError — la operación no aplica a esos tipos. El caso típico es
"2" + 2.
Escribir un programa que guarde un nombre y una edad, y los muestre en una línea.
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:
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).
print("tenés " + edad) → TypeError: can only concatenate str…
print("Hola,", nombre → SyntaxError: '(' was never closed
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.
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:
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 * (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:
El programa completo:
desc = float(input("Descuento en %: "))
final = precio * (1 - desc / 100)
print("Precio final: $" + format(final, ".2f"))
Las pruebas, con los casos que rompen:
(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
- Olvidar las comillas en un texto: Python lo toma como nombre de variable y tira NameError.
- Olvidar cerrar el paréntesis o la comilla, y releer el programa entero en vez de ir a la línea y al símbolo que nombra el mensaje.
- Indentar de más o mezclar tabs con espacios: en Python eso cambia el significado del programa.
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