Este tutorial adapta pedagógicamente el contenido original del Día 1. Las secciones 📝 Ejercicio original del curso provienen de los archivos del curso. Los retos 🟢🟡🟠🔴, el proyecto extra y el proyecto integrador son creaciones de esta adaptación. Las correcciones al material original aparecen como 🛠️ Nota técnica.
Tabla de contenidos
- Antes de empezar
- Imprimir en la consola con
print() - Manipulación de cadenas y depuración de errores
- La función
input()y los comentarios - Variables en Python
- Nombrar variables correctamente
- 🚀 Proyecto del día: Generador de Nombres de Banda
- 🌟 Proyecto extra: Generador de Usuario Institucional
- 🏆 Proyecto integrador del Día 1: Tarjeta de Identidad de Programador
- 🤖 Programar con apoyo de IA
- 🛠️ Correcciones técnicas al material original
- 📋 Matriz de trazabilidad
- 📦 Evidencias de aprendizaje del Día 1
0. Antes de empezar
(Fuentes: 001 - What you're going to get from this course.md, 002 - START HERE.md, 003 - Downloadable Resources and Tips for Taking the Course.md, 004 - Day 1 Goals- what we will make by the end of the day.md, 012 - Congratulations! Well done!.md)
El curso está construido sobre el reto #100DaysOfCode: programar al menos una hora al día durante 100 días y construir un proyecto nuevo cada día. En clase tomaremos ese mismo espíritu: cada sesión termina con algo que funciona y que tú construiste.
¿Qué construiremos hoy? Un generador de nombres de banda. Tu amigo está armando una banda y no se le ocurre un nombre. El programa le pregunta la ciudad donde creció y el nombre de una mascota, y los combina: Bristol + Conejo → Bristol Conejo. Para lograrlo aprenderemos a imprimir mensajes, pedir datos, manipular texto, guardar datos en variables y corregir errores.
Ideas del material original que vale la pena conservar:
- Programar es una habilidad práctica, no de memoria. El curso lo compara con hornear: no hace falta memorizar la receta, sino practicar hasta entender cómo usarla. También con aprender a montar patineta: se aprende practicando, no mirando.
- Cometer errores es parte del proceso. Todos los programadores se equivocan. Lo que distingue a los buenos es que saben encontrar el problema y resolverlo.
- Toma notas mientras el concepto está fresco. El curso propone un "cuaderno de código" con el método de notas Cornell: el código a un lado, tus explicaciones al margen y un resumen abajo.
- Dos reglas del reto: (1) comprométete a programar una hora diaria; (2) registra tu progreso. El curso sugiere publicarlo con el hashtag #100DaysOfCode; en clase puede ser una bitácora o un cartel de avance.
- Celebra cada día completado. Y si un día te toma más tiempo, no pasa nada: tómate un descanso y vuelve.
Los recursos descargables que menciona el curso (hoja de referencia de sintaxis, cuaderno de código, póster de 100 días y fondos de pantalla) no están incluidos entre los archivos suministrados.
Prerequisito: ninguno. Solo necesitas Python y un editor instalados y funcionando. El curso usa PyCharm; también sirven Thonny o VS Code.
1. Imprimir en la consola con print()
(Fuente: 006 - Printing to the Console in Python.md)
🎯 Objetivo de aprendizaje
- Escribir instrucciones con
print()y reconocer qué es una cadena de texto (string). - Leer la salida de la consola y un
SyntaxErrorpara corregir tu propio código. - Distinguir un error (en rojo) de una advertencia de estilo (en amarillo).
🧠 ¿Qué aprenderemos?
- Qué es una función y cómo se usa
print(). - Por qué los strings necesitan comillas.
- Cómo leer la consola: ruta del archivo, salida y código de salida.
SyntaxError, resaltado de sintaxis y advertencias de la guía de estilo PEP 8.
📖 Explicación conceptual
Programar es darle órdenes al computador. La primera orden que aprenderemos es mostrar un mensaje en la consola:
print("¡Hola, mundo!")printes el nombre de la función, en minúsculas.()son los paréntesis: dentro va lo que la función necesita."¡Hola, mundo!"es un string (cadena de texto). Las comillas le dicen a Python: "esto no es código, es un texto que inventé y quiero que lo imprimas tal cual". Pueden ser dobles o simples, pero la de apertura y la de cierre deben ser iguales.
Analogía del curso: un string es como un collar de perlas, una cadena de caracteres. Las comillas marcan dónde empieza y dónde termina.
Cómo leer la consola (en PyCharm):
- Primera línea: la ruta del archivo que se ejecutó.
- Líneas del medio: el resultado de tus órdenes.
- Última línea:
Process finished with exit code 0. El0significa que todo salió bien.
Resaltado de sintaxis. El editor pinta cada parte del código de un color. Si olvidas una comilla de cierre, el paréntesis final cambia al color del texto: es una pista de que algo quedó abierto. El curso insiste en aprender a leer esas pistas de color.
Errores y advertencias:
| Subrayado | Significa | Ejemplo |
|---|---|---|
| 🔴 Rojo | Error: el código no va a funcionar | Falta la comilla de cierre |
| 🟡 Amarillo | Advertencia de estilo (PEP 8, la guía oficial de estilo de Python): funciona, pero no sigue las buenas prácticas | Falta una línea en blanco al final del archivo |
🔎 Ejemplo explicado
print("¡Hola, mundo!")
print("Estoy aprendiendo Python")- Qué problema resuelve: hace que el programa "hable" y muestre información.
- Cómo se ejecuta: de arriba hacia abajo. Primero la línea 1, después la línea 2.
- Resultado esperado: dos líneas en la consola y, al final,
exit code 0.
⚠️ Errores frecuentes
1. Olvidar la comilla de cierre
- Qué ocurre:
print("¡Hola, mundo!)produceSyntaxError: unterminated string literal. - Por qué ocurre: Python no sabe dónde termina el texto, así que cree que el
)es parte del string. - Cómo identificarlo: el
)queda del color del texto, y el mensaje de error señala con un^el lugar aproximado del problema. - Cómo solucionarlo: cierra el string con la misma comilla con la que lo abriste.
2. Mezclar tipos de comillas
- Qué ocurre:
print('Hola")también produce unSyntaxError. - Cómo solucionarlo: abre y cierra con el mismo tipo de comilla.
3. Aceptar la sugerencia del editor sin entenderla
- Qué ocurre: el curso muestra que, si pones la comilla en el lugar equivocado siguiendo una "pista", se crean más problemas.
- Cómo solucionarlo: entiende por qué ocurre el error antes de aplicar cualquier sugerencia, incluidas las que vienen de una IA.
Estrategia del curso ante un error que no entiendes: copia el mensaje de error y búscalo en internet. Normalmente el primer resultado es de Stack Overflow (se abre en otra pestaña), el sitio de preguntas y respuestas que usan los programadores de todo el mundo. Buscar no es hacer trampa: es una habilidad profesional.
📝 Ejercicio original del curso: reparar el print sin comilla
Enunciado (demostración de la lección): a partir de print("¡Hola, mundo!), ejecuta el código, lee el SyntaxError, búscalo en internet si hace falta y corrígelo. Luego elimina también la advertencia amarilla de PEP 8 (falta una línea en blanco al final del archivo).
Resultado esperado: el programa imprime el mensaje y el editor muestra una marca de "sin problemas".
🔍 Antes de programar
- ¿Qué diferencia de color observas entre el
(y el)? - ¿En qué parte del mensaje de error aparece el
^? - ¿Cuál es la diferencia entre el subrayado rojo y el amarillo?
La lección remite a un ejercicio de práctica con
Retos adicionales (creados para esta adaptación)
🟢 Reto 1: Aplicación
Escribe un programa que imprima, en tres líneas, tu nombre, tu curso y el nombre de tu colegio.
🟡 Reto 2: Ampliación
Imprime una frase que contenga comillas, por ejemplo: El profe dijo "hoy programamos". (Pista: usa comillas simples por fuera y dobles por dentro.)
🟠 Reto 3: Desafío: arte con texto
Con varios print(), dibuja con caracteres (*, /, \, _, |) una casa, un árbol o el escudo de tu equipo favorito. ¿Qué pasa si tu dibujo usa \? Observa el resultado y anótalo: lo entenderás en el Tema 2.
🔴 Reto 4: Pensamiento computacional: el cazador de errores
Este código tiene cuatro errores. Encuéntralos sin ejecutarlo, usando solo el resaltado de sintaxis y lo que sabes. Después ejecútalo para confirmar, corrigiendo uno a la vez.
print("Bienvenidos a la clase)
Print("Hoy aprenderemos Python")
print("Tecnología e Informática"
print('Grado décimo")🧩 Comprueba lo aprendido: Tema 1
- Conceptual: ¿por qué un string necesita comillas al inicio y al final?
- Análisis: ¿qué muestra la primera línea de la consola de PyCharm? ¿Y la última?
- Predicción: antes de ejecutarlo, escribe qué crees que pasará con
print("Hola). - Depuración: corrige
print('Grado 10 programa en Python"). - Creación: un programa de tres líneas que imprima tu horario de mañana.
Evidencia: Reto 4 resuelto, con cada error anotado como comentario: qué era y cómo lo corregiste.
2. Manipulación de cadenas y depuración de errores
(Fuente: 007 - String Manipulation and Code Intelligence.md)
Prerequisito: Tema 1.
🎯 Objetivo de aprendizaje
- Crear saltos de línea con
\n. - Concatenar strings con
+, controlando los espacios. - Distinguir
SyntaxErrordeIndentationErrory depurar código sin la ayuda del editor.
🧠 ¿Qué aprenderemos?
- El carácter especial
\n. - Concatenación de strings.
- Por qué los espacios fuera de las comillas importan en Python.
- Errores del intérprete frente a advertencias del editor.
📖 Explicación conceptual
Saltos de línea con \n. En lugar de escribir tres print(), puedes poner \n dentro del string:
print("¡Hola, mundo!\n¡Hola, mundo!\n¡Hola, mundo!")Es una barra invertida (\), no una barra normal (/). No pongas espacios alrededor del \n, a menos que quieras que aparezcan en el resultado.
Concatenación. Concatenar es unir strings con +:
print("Hola" + "Angela") # HolaAngela ← ¡sin espacio!
print("Hola " + "Angela") # espacio al final del primero
print("Hola" + " Angela") # espacio al inicio del segundo
print("Hola" + " " + "Angela") # un string que solo contiene un espacioPython no agrega espacios por su cuenta. Siguiendo la analogía del collar, concatenar es unir varios collares en uno solo.
Los espacios en el código sí importan. Dentro de las comillas, un espacio es solo texto. Fuera de las comillas, un espacio al inicio de la línea cambia la estructura del programa:
print("Primera línea")
print("Segunda línea") # ← un espacio de más al inicioEsto produce IndentationError: unexpected indent. Otros espacios, como print ("Hola"), sí funcionan, pero generan una advertencia de estilo (PEP 8: no debe haber espacio antes del paréntesis).
| Error | Causa típica |
|---|---|
SyntaxError |
Algo mal escrito o incompleto: comillas, paréntesis |
IndentationError |
Espacios o tabulaciones inesperados al inicio de una línea |
Mensajes del intérprete frente a pistas del editor. El curso aclara una diferencia importante:
- Los subrayados y sugerencias son del editor (PyCharm). Otro editor puede mostrar otros o ninguno.
- El mensaje de error que aparece al ejecutar viene de Python mismo y es igual en cualquier editor.
Por eso conviene aprender a leer SyntaxError, IndentationError, etc.: te servirá sin importar la herramienta que uses.
🔎 Ejemplo explicado
print("Hola" + " " + "Angela" + "\n" + "Bienvenida al curso")- Qué hace cada parte: cada
+une el string de la izquierda con el de la derecha, y el\ninserta el salto de línea en ese punto. - Resultado esperado:
Hola Angela
Bienvenida al curso⚠️ Errores frecuentes
1. Escribir /n en lugar de \n
- Qué ocurre: se imprime literalmente
/n. - Cómo identificarlo: con
\n, el editor lo resalta con otro color; con/n, no.
2. IndentationError por un espacio o una tabulación invisible
- Cómo solucionarlo: revisa el inicio de la línea que indica el error y borra los espacios de más.
3. Olvidar el +
- Qué ocurre depende de los elementos:
- Entre dos strings escritos directamente,
print("Hola" "Angela"), no hay error: Python los une y muestraHolaAngela. Esto puede esconder errores. - Si uno de los dos es una variable (Tema 4),
print("Hola " nombre)produceSyntaxError: invalid syntax. Perhaps you forgot a comma?.
- Entre dos strings escritos directamente,
- Cómo solucionarlo: escribe siempre el
+de forma explícita.
4. Olvidar el espacio al concatenar
- Qué ocurre:
HolaAngela. - Cómo solucionarlo: elige una de las tres formas de agregar el espacio mostradas arriba.
📝 Ejercicio original del curso 1: más líneas con \n
Enunciado: a partir de print("¡Hola, mundo!\n¡Hola, mundo!"), agrega otra línea usando solo \n, dentro del mismo print.
Resultado esperado: tres líneas de ¡Hola, mundo! sin espacios extra al inicio de ninguna.
📝 Ejercicio original del curso 2: agregar el espacio
Enunciado: print("Hola" + "Angela") imprime HolaAngela. Modifícalo para que imprima Hola Angela.
Resultado esperado: Hola Angela. El curso muestra tres formas válidas de lograrlo; intenta encontrarlas todas.
🔍 Antes de programar
- ¿Dónde puede ir el espacio: en el primer string, en el segundo o en un string aparte?
- ¿Cuál de las tres formas te parece más legible? ¿Por qué?
📝 Ejercicio original del curso 3: depuración sin ayudas
La lección anuncia un ejercicio de depuración en otro editor, sin los subrayados de PyCharm, para corregir línea por línea usando solo los mensajes de error. Su código no está incluido entre los archivos suministrados. El Reto 4 de abajo propone una actividad equivalente.
Retos adicionales (creados para esta adaptación)
🟢 Reto 1: Aplicación
Con un solo print y \n, imprime tu nombre, tu curso y tu colegio en tres líneas.
🟡 Reto 2: Ampliación
Con concatenación, forma la frase Me llamo Sara y estudio en 10A, usando al menos 4 strings unidos con +. Cuida los espacios.
🟠 Reto 3: Desafío: tu primer "recibo"
Con un solo print, usando \n y +, imprime:
===== TIENDA ESCOLAR =====
Empanada
Jugo de mora
=========================Luego repite el recibo con 4 print separados. ¿Cuál versión es más fácil de leer y modificar?
🔴 Reto 4: Pensamiento computacional: depuración en otro editor
Copia este código en un editor sin ayudas (por ejemplo, el Bloc de notas) y ejecútalo desde la terminal con python archivo.py, o pégalo en un intérprete en línea. Corrige los errores uno por uno, de arriba abajo, usando solo los mensajes de Python. Anota cada mensaje y su causa.
print("Día 1 - Taller de depuración")
print("Imprimir" + "con" + "espacios")
print("Esta línea tiene sangría")
print("Falta algo aquí"
print("Salto de línea: /n no funciona así")(El segundo print no produce ningún error, pero sí un resultado incorrecto. ¿Lo detectaste?)
🧩 Comprueba lo aprendido: Tema 2
- Conceptual: ¿en qué se diferencia un espacio dentro de un string de un espacio antes de
print? - Predicción: ¿cuántas líneas imprime
print("Uno\nDos\nTres")? ¿Qué imprimeprint("Colegio" + "Nacional")? - Depuración: este código lanza un
IndentationError. Corrígelo:
print("Primera línea")
print("Segunda línea")- Conceptual: ¿por qué conviene aprender los nombres de los errores de Python en lugar de depender de los subrayados del editor?
Evidencia: registro del Reto 4, con una tabla de errores (mensaje → causa → corrección).
3. La función input() y los comentarios
(Fuente: 008 - The Python Input Function.md)
🎯 Objetivo de aprendizaje
- Pedir datos al usuario con
input(). - Usar el resultado de
input()dentro de unprint()(funciones dentro de funciones). - Documentar el código con comentarios.
🧠 ¿Qué aprenderemos?
input()y el mensaje guía (prompt).- Cómo se evalúa una función que está dentro de otra.
- Comentarios con
#y el atajo para comentar o descomentar líneas. - Seguimiento paso a paso con Thonny.
📖 Explicación conceptual
print() hace que el programa hable. input() hace que escuche:
input("¿Cómo te llamas? ")- El texto entre paréntesis es el prompt: la pregunta que ve el usuario.
- Al llegar a esta línea, el programa se detiene y espera. En PyCharm lo notarás porque el botón de detener sigue activo y todavía no aparece
exit code 0. - El usuario escribe en la consola y presiona Enter.
¿Qué pasa con lo que escribió el usuario? El curso lo explica así: cuando la línea se ejecuta, todo el input(...) se reemplaza por lo que escribió el usuario. Por eso se puede usar dentro de un print():
print("Hola " + input("¿Cómo te llamas? "))Orden de evaluación, si el usuario escribe Angela:
| Paso | Qué hace Python | La línea queda como |
|---|---|---|
| 1 | Ejecuta input(...), muestra la pregunta y espera |
— |
| 2 | Reemplaza input(...) por lo que escribió el usuario |
print("Hola " + "Angela") |
| 3 | Concatena | print("Hola Angela") |
| 4 | Imprime | Hola Angela |
Hay dos paréntesis de cierre al final: uno cierra el input y el otro el print.
💡 Recomendación del curso: si esta línea te resulta difícil de entender, instala Thonny (se abre en otra pestaña) (gratuito, para Windows, Mac y Linux). Pega la línea, presiona el ícono de depuración y avanza con el botón de "entrar paso a paso" (step into). Verás cómo Python evalúa cada parte.
Comentarios. Una línea que empieza con # es ignorada por Python. Sirve para explicarte el código a ti mismo o a otras personas:
# Pide el nombre y lo saluda con signo de exclamación
print("Hola " + input("¿Cómo te llamas? ") + "!")Atajo: Ctrl + / en Windows o Cmd + / en Mac comenta o descomenta la línea donde está el cursor, o las líneas seleccionadas.
Recomendación del curso: cada vez que aprendas un concepto nuevo, escribe encima un comentario con tus propias palabras. La próxima vez que veas ese código, tus notas te lo recordarán.
🔎 Ejemplo explicado
# Saludo personalizado
print("Bienvenido, " + input("¿Cuál es tu nombre? ") + ". ¡Qué bueno verte!")- Qué problema resuelve: el saludo cambia según quién usa el programa, en lugar de ser un "Hola usuario" genérico.
- Resultado esperado: si el usuario escribe
Tomás, se imprimeBienvenido, Tomás. ¡Qué bueno verte!.
⚠️ Errores frecuentes
1. Creer que el prompt es el resultado
- Qué ocurre: esperar que
input("Hola")"imprima Hola" como resultado del programa. - Cómo solucionarlo: el prompt es solo la pregunta. El resultado es lo que escribe el usuario.
2. Contar mal los paréntesis
- Qué ocurre:
print("Hola " + input("¿Nombre? ")))produceSyntaxError: unmatched ')'. - Cómo solucionarlo: cuenta los paréntesis de apertura y de cierre. Consejo del curso: selecciona el código que quieres "envolver" y escribe
(; muchos editores ponen los dos paréntesis automáticamente.
3. El cursor pegado a la pregunta
- Qué ocurre:
input("¿Nombre?")deja el cursor justo después del signo de interrogación. - Cómo solucionarlo: agrega un espacio al final del prompt,
"¿Nombre? ", o un salto de línea,"¿Nombre?\n".
📝 Ejercicio original del curso: agregar el signo de exclamación
Enunciado: modifica print("Hola " + input("¿Cómo te llamas? ")) para que el saludo termine con un signo de exclamación.
Resultado esperado: con Angela, se imprime Hola Angela!.
Conceptos: input() dentro de print(), concatenación.
🔍 Antes de programar
- Después de ejecutarse, ¿en qué se "convierte" el
input(...)? - Si el
input(...)es un string, ¿cómo se le agrega otro string al final? - ¿Dónde va el
+ "!": dentro o fuera del paréntesis delinput?
Estrategia del curso: trata el input(...) como si fuera un string más, porque cuando el programa se ejecute será un string.
Retos adicionales (creados para esta adaptación)
🟢 Reto 1: Aplicación
Pregunta al usuario su comida favorita y responde ¡A mí también me encanta [comida]!.
🟡 Reto 2: Ampliación
Con un solo print y dos input, pregunta el nombre y el curso, e imprime Hola Sara, bienvenida a 10A. ¿En qué orden aparecen las preguntas? ¿Por qué?
🟠 Reto 3: Desafío: comenta como profesional
Toma tu solución del Reto 2 y escribe comentarios que expliquen qué hace y en qué orden evalúa Python cada parte. Luego verifica tu explicación ejecutándola paso a paso en Thonny.
🔴 Reto 4: Pensamiento computacional: la pregunta ambigua
Un programa pregunta input("¿Edad?") y luego imprime "Tienes " + ... + " años". ¿Qué pasa si el usuario escribe quince? ¿Y 15 años? Escribe tres versiones mejoradas del prompt que guíen al usuario a responder en el formato correcto. Discute: ¿basta con un buen mensaje para evitar errores? (En el Día 2 verás cómo convertir texto en números y por qué este problema se vuelve importante.)
🧩 Comprueba lo aprendido: Tema 3
- Conceptual: ¿qué diferencia hay entre el texto que va dentro de
input()y lo que se termina imprimiendo? - Predicción: si el usuario escribe
Colombia, ¿qué imprimeprint("Vives en " + input("¿País? "))? - Depuración:
print("Hola " + input("¿Cómo te llamas? "))). - Modificación: comenta la línea del ejemplo explicado con
Ctrl + /y ejecuta. ¿Qué pasa? Descoméntala. - Creación: un programa que pregunte tu color favorito y responda
El [color] es un gran color.
Evidencia: Reto 3, con los comentarios y una captura de Thonny en modo paso a paso.
4. Variables en Python
(Fuente: 009 - Python Variables.md)
Prerequisito: Tema 3.
🎯 Objetivo de aprendizaje
- Crear variables para guardar datos y reasignarlas.
- Calcular la longitud de un string con
len(). - Buscar en la documentación una función que no conoces.
🧠 ¿Qué aprenderemos?
- Asignación (
=) y reasignación. - La función
len(). - Documentación: W3Schools, Stack Overflow y docs.python.org.
- Por qué dividir el código en pasos con nombre lo hace más legible.
📖 Explicación conceptual
Cuando ejecutas input("¿Cómo te llamas? ") sin más, el nombre se recibe… y desaparece: no hay forma de volver a usarlo. Una variable le da un nombre a un dato para poder usarlo después.
Analogía del curso: una agenda telefónica. Si solo anotas números, luego no sabrás de quién es cada uno. Si escribes "James → 300 123 4567", podrás encontrarlo por su nombre.
name = input("¿Cómo te llamas? ")
print(name)=es el operador de asignación: significa "guarda en la variable de la izquierda lo que está a la derecha". No es el "igual" de matemáticas.- Desde esa línea en adelante,
namepuede usarse en cualquier parte del programa.
Las variables pueden cambiar (por eso se llaman así):
name = "Jack"
print(name) # Jack
name = "Angela"
print(name) # AngelaCada print muestra el valor que la variable tiene en ese momento, no el valor final.
La función len(). ¿Cómo saber cuántos caracteres tiene un texto? El curso no lo explica de antemano: te muestra cómo buscarlo, escribiendo "how to find the length of a string" + Python. La respuesta está en la documentación:
print(len("Hola Mundo")) # 10 (el espacio también cuenta)Idea del curso: "El cerebro es para pensar, no para almacenar." No intentes memorizar la documentación como si fuera un diccionario; búscala cuando la necesites.
🔎 Ejemplo explicado: de una línea a tres
Versión en una línea:
print(len(input("¿Cómo te llamas? ")))Versión con variables:
username = input("¿Cómo te llamas? ")
length = len(username)
print(length)- Resultado esperado (ambas versiones): con
Angela, se imprime6. - ¿Para qué tres líneas si una basta? El curso responde: la segunda versión etiqueta cada paso (obtener el nombre → calcular la longitud → imprimir). Es más legible, y cuando los programas crecen, dividir el código en partes con nombre "se convierte en un salvavidas".
⚠️ Errores frecuentes
1. Leer = como una comparación
- Cómo solucionarlo: lee
name = "Ana"como "name toma el valor "Ana"", de derecha a izquierda.
2. Esperar que la variable "recuerde" sus valores anteriores
- Qué ocurre: una variable guarda solo el último valor asignado.
3. Imprimir el nombre de la variable entre comillas
- Qué ocurre:
print("name")imprime la palabraname, no su valor. - Cómo solucionarlo:
print(name), sin comillas.
4. Creer que len() no cuenta los espacios
- Qué ocurre:
len("Hola Mundo")es 10, no 9. Los espacios también son caracteres.
📝 Ejercicio original del curso 1: ¿qué se imprime?
Enunciado: antes de ejecutarlo, predice qué imprime cada print:
name = "Jack"
print(name)
name = "Angela"
print(name)Resultado esperado: Jack y después Angela.
📝 Ejercicio original del curso 2: contar caracteres en una línea
Enunciado: en una sola línea de código, pide el nombre del usuario, calcula cuántos caracteres tiene e imprime ese número.
Resultado esperado: Jack → 4; Angela → 6.
🔍 Antes de programar
- ¿Qué función necesitas y cómo la buscarías si no la conocieras?
- ¿Qué va dentro de qué? Piensa en tres "capas":
print(len(input(...))).
📝 Ejercicio original del curso 3: separar en variables
Enunciado: reescribe el ejercicio anterior usando dos variables: username, que guarda lo que escribe el usuario, y length, que guarda la longitud. Al final, imprime length.
Resultado esperado: el mismo resultado que el ejercicio 2, pero en tres pasos con nombre.
Retos adicionales (creados para esta adaptación)
🟢 Reto 1: Aplicación
Pide el nombre de tu ciudad, guárdalo en una variable e imprime La ciudad [ciudad] tiene [N] caracteres. (Pista: todavía no sabes unir un número con texto usando +; eso se ve en el Día 2. Por ahora, imprime la frase y el número en dos print separados.)
🟡 Reto 2: Ampliación: intercambio de variables
Tienes a = "rojo" y b = "azul". Escribe código para intercambiar los valores, de modo que a termine valiendo "azul" y b valiendo "rojo", sin escribir "rojo" ni "azul" de nuevo. (Pista: piensa en cómo intercambiarías el contenido de dos vasos: necesitas un tercero.)
🟠 Reto 3: Desafío
Pide el nombre y el apellido en dos variables. Crea una tercera variable nombre_completo con ambos, separados por un espacio, e imprime el nombre completo y, en otra línea, su longitud.
🔴 Reto 4: Pensamiento computacional: la agenda
Diseña un programa que funcione como una "ficha de contacto": pide nombre, celular y correo, guarda cada dato en una variable y muestra la ficha organizada con \n. Luego reasigna el celular (el contacto cambió de número) y muestra la ficha actualizada. Antes de programar, escribe en papel las entradas, el proceso y las salidas.
🧩 Comprueba lo aprendido: Tema 4
- Conceptual: ¿por qué decimos que una variable es como una "etiqueta" para un dato?
- Predicción: ¿qué se imprime?
color = "azul"
print(color)
color = "rojo"
print(color)
print("color")- Depuración: el programa debería imprimir la longitud del mensaje, pero imprime el mensaje. Corrígelo:
mensaje = "Hola grado 10"
tamano = len(mensaje)
print(mensaje)- Creación: guarda tu materia favorita en una variable e imprime cuántas letras tiene.
Evidencia: Reto 2 resuelto, con una explicación de por qué hace falta la tercera variable.
5. Nombrar variables correctamente
(Fuente: 010 - Variable Naming.md)
Prerequisito: Tema 4.
🎯 Objetivo de aprendizaje
- Aplicar las reglas obligatorias para nombrar variables.
- Seguir las buenas prácticas de legibilidad.
- Reconocer y corregir un
NameError.
📖 Explicación conceptual
Puedes llamar a tus variables casi como quieras, siempre que seas consistente: si la creas como n, debes usar exactamente n en todo el programa.
Reglas obligatorias (si no las cumples, se produce un SyntaxError):
| Regla | ✅ Válido | ❌ Inválido |
|---|---|---|
| Sin espacios; las palabras se separan con guion bajo | nombre_usuario |
nombre usuario |
| Puede tener números, pero no al inicio | longitud1 |
1longitud |
Buenas prácticas (recomendadas):
- Nombres que se entiendan. Dentro de 6 o 12 meses,
nylno te dirán nada;nombre_usuarioylongitudsí. - No uses nombres de funciones como nombres de variables, por ejemplo
printoinput. El resaltado de sintaxis se confunde y el código se vuelve difícil de leer. Además, rompe la función: después deinput = "Ana", llamar ainput("...")produceTypeError: 'str' object is not callable. - Consejo del curso: revisa que todos los nombres de tus variables tengan el mismo color en el editor. Si una se ve de otro color, quizás estás usando un nombre reservado.
El NameError. Si creas name y luego escribes print(nama), Python responde NameError: name 'nama' is not defined.
- Python no corrige la ortografía.
namaynameson, para él, dos nombres distintos. - De hecho,
namaes un nombre perfectamente válido si lo usas siempre igual. Podría ser, por ejemplo, el nombre de un personaje de videojuego. Lo único que le importa a Python es la consistencia. - El subrayado verde de "error de ortografía" que muestra PyCharm es solo una sugerencia del editor, no un error de Python.
🔎 Ejemplo explicado
# Guarda el nombre de usuario y lo saluda
nombre_usuario = input("¿Cómo te llamas? ")
print("Hola " + nombre_usuario)- Por qué este nombre:
nombre_usuariodice exactamente qué contiene. - Consistencia: se escribe igual en la línea donde se crea y en la línea donde se usa.
⚠️ Errores frecuentes
| Código | Error | Causa |
|---|---|---|
print(nama) después de name = ... |
NameError |
Error de tipeo o nombre inconsistente |
nombre usuario = "Ana" |
SyntaxError |
Espacio en el nombre |
1longitud = 5 |
SyntaxError |
Empieza con un número |
input = "Ana" y luego input("¿Edad?") |
TypeError: 'str' object is not callable |
Se "tapó" la función input |
edadEstudiante cuando se creó edad_estudiante |
NameError |
Estilo distinto = nombre distinto |
📝 Ejercicio original del curso: cuestionario de nombres de variables
La lección remite a un cuestionario para identificar qué nombres son válidos y cuáles son buena práctica. Su contenido no está incluido entre los archivos suministrados. La actividad de clasificación del Reto 1 cubre el mismo objetivo.
Retos adicionales (creados para esta adaptación)
🟢 Reto 1: Aplicación: ¿válido? ¿buena práctica?
Clasifica cada nombre en inválido, válido pero no recomendado o válido y recomendado. Comprueba en Python los que no estés seguro:
nombre_estudiante, 2do_apellido, print, x, ciudad natal, ciudad_natal, ciudad2, input, NombreUsuario, _temporal.
🟡 Reto 2: Ampliación: refactorizar
Este código funciona, pero es difícil de leer. Cambia los nombres de las variables sin cambiar lo que hace el programa:
a = input("¿Ciudad? ")
b = input("¿Mascota? ")
c = a + " " + b
print(c)🟠 Reto 3: Desafío: el NameError escondido
Este programa produce un NameError. Encuéntralo, explica por qué ocurre y corrígelo de dos formas distintas:
ciudad_de_origen = input("¿Dónde naciste? ")
print("Naciste en " + ciudad_de_orijen)🔴 Reto 4: Pensamiento computacional: guía de estilo del curso
Con tu grupo, redacta una guía de 5 reglas para nombrar variables en los proyectos de la clase: idioma (¿español o inglés?), tildes (¿año o anio?), abreviaturas, etc. Justifica cada regla. Luego aplícala a un programa de un compañero y dale retroalimentación.
🧩 Comprueba lo aprendido: Tema 5
- Conceptual: ¿por qué
1nombreno es válido peronombre1sí? - Análisis: entre
n = input(...)ynombre_usuario = input(...), ¿cuál es mejor y por qué? - Predicción: ¿qué error produce
ciudad = input("?")seguido deprint(ciuadd)? - Depuración: corrige
edad_estudiante = input("¿Edad? ")seguido deprint("Tienes " + edadEstudiante + " años").
Evidencia: clasificación del Reto 1 y guía de estilo del Reto 4.
6. 🚀 Proyecto del día: Generador de Nombres de Banda
(Fuente: 011 - Day 1 Project- Band Name Generator.md, proyecto oficial del curso original)
Problema
Tu amigo formó una banda (de rock, la banda marcial del colegio, lo que sea) y no se le ocurre un nombre. Tú vas a resolverlo con un programa.
Contexto
La fórmula del curso: la ciudad donde creciste + el nombre de una mascota. La instructora creció en Bristol y tuvo un conejo llamado "Conejo", así que su banda sería Bristol Conejo.
Objetivo
Un programa que pregunte la ciudad y la mascota y sugiera un nombre de banda.
Requisitos funcionales
- Mensaje de bienvenida:
Bienvenido al Generador de Nombres de Banda. - Preguntar la ciudad donde creció el usuario.
- Preguntar el nombre de una mascota.
- Mostrar:
El nombre de tu banda podría ser: [ciudad] [mascota]. - El cursor de cada
input()debe quedar en una línea nueva.
Restricciones técnicas
Solo lo aprendido hoy: print(), input(), variables, concatenación y \n.
🔍 Antes de programar: planificación
- Comprender: el resultado es "ciudad + espacio + mascota".
- Entradas: ¿cuáles son y en qué variables las guardarás?
- Proceso: ¿cómo las unes? ¿Dónde va el espacio?
- Salida: ¿qué mensaje exacto se muestra?
- Detalle: ¿dónde pones el
\npara que el cursor baje?
Construcción paso a paso (como en la solución del curso)
Versión 1: bienvenida. Solo el print de bienvenida. Ejecuta y verifica.
Versión 2: la primera pregunta. Agrega el input de la ciudad. El curso hace notar que, si no guardas la respuesta, "se pierde en el aire". Guárdala en una variable, city, e imprímela para comprobar.
Versión 3: la segunda pregunta. Agrega la mascota en la variable pet.
Versión 4: combinar. Concatena en el mensaje final. El curso comenta que hay muchas formas de hacerlo (si buscas en internet encontrarás otras), pero pide usar la que aprendiste hoy: la concatenación.
Versión 5: experiencia de usuario. Agrega \n al final de cada prompt para que el usuario escriba en la línea siguiente.
La solución completa no se muestra aquí a propósito: con estas 5 versiones puedes construirla. Si te atascas, vuelve a los Temas 2 a 4.
Pruebas
| Ciudad | Mascota | Resultado esperado |
|---|---|---|
| Bristol | Conejo | El nombre de tu banda podría ser: Bristol Conejo |
| Medellín | Firulais | El nombre de tu banda podría ser: Medellín Firulais |
| San Andrés | Coco | El nombre de tu banda podría ser: San Andrés Coco (los espacios del nombre de la ciudad se conservan) |
🧪 Prueba y depuración
Este código tiene cuatro errores: dos impiden que se ejecute y dos producen un resultado incorrecto. Encuéntralos:
print("Bienvenido al Generador de Nombres de Banda")
city = input("¿En qué ciudad creciste?")
pet = input(¿Cómo se llama una mascota que hayas tenido?\n")
print("El nombre de tu banda podría ser: " + city + pet)
print("¡Suerte con la banda de " + ciudad + "!")(Pistas: una comilla que falta, un nombre de variable que no existe, un espacio que falta en el nombre de la banda y un cursor que no queda en una línea nueva, que es el requisito 5.)
⭐ Extensión del proyecto
- Agrega una tercera pregunta (color favorito, comida…) e inclúyela en el nombre.
- Muestra dos propuestas: "ciudad mascota" y "mascota ciudad".
- Muestra cuántos caracteres tiene el nombre de la banda, en una línea aparte.
- Agrega un mensaje de despedida.
7. 🌟 Proyecto extra: Generador de Usuario Institucional
Situación
El departamento de sistemas del colegio necesita sugerir nombres de usuario para la plataforma virtual de los estudiantes.
Objetivo
Pedir el primer nombre, el primer apellido y el curso, y:
- Sugerir un usuario con el patrón
nombre.apellido.curso(por ejemplosofia.rios.10a). - Mostrar cuántos caracteres tiene el usuario generado.
Requisitos
- Tres
input()guardados en variables con nombres descriptivos. - Una variable
usuarioconstruida por concatenación, con puntos entre las partes. - Salida en dos líneas: el usuario y su longitud.
- Comentarios que expliquen cada bloque: entradas, proceso y salida.
Restricciones técnicas
Solo print(), input(), variables, concatenación y len().
Decisiones de diseño
- ¿Qué pasa si el estudiante escribe su nombre con mayúscula (
Sofia)? ¿Y con tilde (Sofía)? ¿Sería un buen usuario para una plataforma? Anota el problema. (Investiga el método.lower()si quieres ir más allá; se usa formalmente en el Día 3.) - ¿Qué pasa si el estudiante tiene dos nombres (
María José)?
Pruebas
| Nombre | Apellido | Curso | Usuario esperado | Longitud |
|---|---|---|---|---|
| sofia | rios | 10a | sofia.rios.10a |
14 |
| juan | paz | 10b | juan.paz.10b |
12 |
⭐ Extensión
Genera también una sugerencia alternativa con el patrón apellido.nombre.
8. 🏆 Proyecto integrador del Día 1: Tarjeta de Identidad de Programador
Proyecto integrador de este día, creado para esta adaptación. Reúne todos los conceptos del Día 1.
Situación problema
Vas a crear tu primera "tarjeta de presentación" como programador, para mostrarla en la feria de tecnología del colegio.
Pregunta orientadora
¿Cómo combinar print, input, variables, concatenación, \n, len y comentarios en un programa bien organizado y legible?
Requerimientos
- Mensaje de bienvenida.
- Pedir: nombre completo, curso, lenguaje de programación favorito y un pasatiempo.
- Guardar cada dato en una variable con un nombre descriptivo (según la guía del Tema 5).
- Calcular la longitud del nombre completo con
len(). - Mostrar la tarjeta con este formato:
=== TARJETA DE PROGRAMADOR ===
Nombre: [nombre]
Curso: [curso]
Lenguaje favorito: [lenguaje]
Pasatiempo: [pasatiempo]
===============================- En una línea aparte, mostrar la longitud del nombre. (Recuerda: en el Día 1 todavía no se une un número con texto usando
+, así que usa unprintseparado.) - Al menos tres comentarios útiles.
Restricciones técnicas
Únicamente los conceptos del Día 1.
Etapas de desarrollo
- Bienvenida y entradas: prueba cada
input. - Construye la tarjeta por partes. Crea, por ejemplo, una variable
linea_nombre = "Nombre: " + nombre_completo, y así con cada línea. - Une las partes con
\nen una sola variabletarjetae imprímela. - Agrega la longitud y los comentarios.
- Revisa los nombres de las variables y el formato final.
Entregables
- Archivo
.pyfuncional. - Captura de pantalla de una ejecución.
- Registro de al menos un error que hayas cometido y cómo lo corregiste.
Casos de prueba
| Nombre completo | Longitud esperada |
|---|---|
Sofía Ríos |
10 |
Angela |
6 |
Criterios técnicos de funcionamiento
- Sin
SyntaxError,IndentationErrorniNameError. - Nombres de variables descriptivos, siguiendo las reglas del Tema 5.
- El formato de salida respeta los saltos de línea y los espacios.
🧪 Prueba y depuración entre pares
Intercambia tu código con un compañero. Cada uno introduce a propósito tres errores: uno de comillas, uno de sangría y uno de nombre de variable. El otro debe encontrarlos usando solo los mensajes de Python y anotar en un comentario el tipo de cada error.
Posibles extensiones
- Investiga cómo repetir un carácter (
"=" * 30) para dibujar bordes. Es un adelanto del Día 5. - Agrega un "lema personal" y muestra cuántos caracteres tiene.
9. 🤖 Programar con apoyo de IA
El curso lo advierte desde la primera lección: el editor sugirió una corrección para la comilla faltante, pero aplicarla sin entender puede crear más problemas. Lo mismo vale para una IA: primero se entiende cómo funcionan las cosas; después se usa la tecnología para ayudarnos.
Cuando uses IA:
- Formula el problema con tus propias palabras.
- Intenta primero tu propia solución.
- Consulta la IA solo si te atascas, y pide explicaciones, no solo código.
- Lee y comprende línea por línea lo que te sugiera.
- Ejecútalo y pruébalo con datos distintos a los del ejemplo.
- Revisa si usa conceptos que aún no has visto. Si es así, pide una versión con lo que ya sabes.
- Verifica en la documentación oficial o en W3Schools lo que no reconozcas.
- Explica con tus palabras, en un comentario, cómo funciona.
Actividad: comprobar una afirmación. Pregúntale a una IA: "¿Qué pasa en Python si escribo dos strings seguidos sin el signo +, como print("Hola" "Mundo")?". Luego:
- Ejecútalo.
- Compara el resultado con la respuesta de la IA y con el Error frecuente 3 del Tema 2.
- Escribe: ¿la IA tenía razón? ¿Cómo lo verificaste?
10. 🛠️ Correcciones técnicas al material original
| Archivo | Afirmación en la transcripción | Qué ocurre realmente | Tratamiento |
|---|---|---|---|
007 |
La palabra "depuración" viene de una historia "de los años 80" en la que una polilla se electrocutó en un computador | El famoso registro de la polilla encontrada en el computador Harvard Mark II, asociado al equipo de Grace Hopper, es de 1947. Además, la palabra bug para referirse a fallas técnicas se usaba desde antes | Se menciona aquí; en clase se puede proponer como mini-investigación |
007 |
Los errores que aparecen al ejecutar "vienen del compilador de Python" | Python se considera un lenguaje interpretado. Los mensajes provienen del intérprete (que internamente compila a bytecode). La idea importante del curso sigue siendo válida: esos mensajes no dependen del editor | Se usa "intérprete" en el Tema 2 |
006 |
Process finished with exit code 0 |
Ese mensaje es propio de PyCharm. Otros editores o la terminal muestran otra cosa, o nada | Se aclara "en PyCharm" en el Tema 1 |
| — | Posible idea de que olvidar el + siempre produce un error |
Entre dos strings escritos directamente ("Hola" "Mundo") no hay error: Python los une automáticamente (verificado) |
Error frecuente 3 del Tema 2 y actividad de IA |
003 |
Recursos descargables (hoja de sintaxis, cuaderno, póster, libro electrónico) | No están incluidos entre los archivos suministrados | Se indica en la Sección 0 |
11. 📋 Matriz de trazabilidad
| Contenido original | Archivo de origen | Concepto desarrollado | Ejercicio original | Reto adicional | Proyecto relacionado |
|---|---|---|---|---|---|
| Presentación del curso, #100DaysOfCode | 001, 002 |
Sección 0 | — (contenido introductorio) | — | — |
| Consejos y recursos del curso | 003 |
Sección 0 | — (recursos no suministrados) | — | — |
| Objetivos: generador de nombres de banda | 004 |
Sección 0 | Probar la versión final | — | Sección 6 |
print(), strings, consola, SyntaxError, PEP 8 |
006 |
Tema 1 | Reparar el print sin comilla. Práctica de print (archivo 005, no suministrado) |
Retos 1–4 del Tema 1 (cazador de errores) | Secciones 6, 7 y 8 |
\n, concatenación, IndentationError, errores del intérprete frente al editor |
007 |
Tema 2 | Más líneas con \n. Agregar el espacio. Ejercicio de depuración (mencionado, no suministrado) |
Retos 1–4 del Tema 2 (depuración en otro editor) | Secciones 6 y 8 |
input(), funciones anidadas, Thonny, comentarios |
008 |
Tema 3 | Agregar el signo de exclamación | Retos 1–4 del Tema 3 (la pregunta ambigua) | Secciones 6, 7 y 8 |
Variables, reasignación, len(), documentación |
009 |
Tema 4 | Predecir Jack/Angela. len en una línea. Separar en username y length |
Retos 1–4 del Tema 4 (intercambio, agenda) | Secciones 6, 7 y 8 |
Reglas de nombres, legibilidad, NameError |
010 |
Tema 5 | Cuestionario (mencionado, no suministrado) | Retos 1–4 del Tema 5 (guía de estilo) | Secciones 6 y 8 |
| Generador de Nombres de Banda | 011 |
Integración de los Temas 1–5 | Proyecto oficial completo | Depuración con 4 errores y extensiones | Sección 6 |
| Felicitaciones del primer día | 012 |
Sección 0 | — | — | — |
| (No existe en el curso original) | — | — | — | Generador de Usuario Institucional | Sección 7 |
| (No existe en el curso original) | — | — | — | Tarjeta de Identidad de Programador | Sección 8 |
12. 📦 Evidencias de aprendizaje del Día 1
- Generador de Nombres de Banda funcionando, con la tabla de pruebas.
- Reto 4 del Tema 1 (cazador de errores) y registro del Reto 4 del Tema 2 (depuración en otro editor).
- Ejercicios originales del Tema 4 resueltos:
lenen una línea y la versión con variables. - Clasificación de nombres de variables y guía de estilo del grupo (Tema 5).
- Uno de los proyectos adicionales: Usuario Institucional o Tarjeta de Programador.
- Cuaderno de errores iniciado con
SyntaxError,IndentationError,NameErroryTypeError: 'str' object is not callable: qué los causa y cómo corregirlos.