Python: variables, tipos de datos, operadores y entrada/salida
Nivel: iniciación
Pregunta que responde: ¿Cuáles son los elementos básicos con los que construimos un programa sencillo en Python y cómo podemos escribirlos para que también los entiendan las personas?
Requisitos previos: ninguno.
Un programa también se escribe para personas
Programar no consiste únicamente en conseguir que el ordenador haga algo.
También consiste en conseguir que otra persona —o nosotros mismos dentro de unos meses— pueda entender qué hace el programa, con qué datos trabaja y por qué está escrito de esa manera.
Observa estos dos fragmentos:
a = 68.5
b = 1.72
c = a / (b ** 2)
print(c)
y:
peso_kg = 68.5
altura_m = 1.72
indice = peso_kg / (altura_m ** 2)
print(indice)
Para Python, ambos son perfectamente válidos.
Para una persona, no cuentan la misma historia.
En esta pieza vamos a aprender los elementos más básicos con los que empezamos a construir un programa: variables, tipos de datos, constantes, operadores, entrada y salida de información y comentarios.
Y, al mismo tiempo, empezaremos a adquirir algunos hábitos que distinguen un código que simplemente funciona de un código que además puede mantenerse y entenderse.
1. Las variables ponen nombre a los datos
Un programa trabaja constantemente con información:
- una edad;
- una temperatura;
- una distancia;
- un nombre;
- una puntuación;
- el resultado de un cálculo.
Para poder utilizar esos valores necesitamos referirnos a ellos.
En Python podemos escribir:
edad = 25
altura = 1.75
nombre = "Carlos"
Aquí aparecen tres variables:
edad → 25
altura → 1.75
nombre → "Carlos"
Una forma sencilla de entenderlo es esta:
Una variable es un nombre que utilizamos para referirnos a un valor dentro del programa.
El símbolo:
=
es el operador de asignación.
No significa exactamente «es igual a», como en matemáticas.
En:
edad = 25
estamos indicando:
asigna el valor
25al nombreedad.
2. Elegir un nombre también es programar
Podríamos escribir:
n = 24
p = 18.50
t = n * p
Python puede ejecutarlo.
Pero compara ahora:
numero_unidades = 24
precio_unidad = 18.50
precio_total = numero_unidades * precio_unidad
El cálculo es el mismo.
La diferencia está en todo lo que podemos comprender sin necesidad de investigar el resto del programa.
Por eso merece la pena detenerse unos segundos antes de crear una variable y preguntarse:
¿Qué representa realmente este dato?
No se trata de elegir el nombre más largo posible.
Se trata de elegir uno que aporte significado.
Son nombres razonables:
numero_alumnos
temperatura_exterior
distancia_km
precio_total
puntos
Mientras que:
x
dato
cosa
a1
temp
pueden resultar demasiado ambiguos si no existe un contexto que los justifique.
En un proyecto real
Un nombre como t puede resultar evidente para quien acaba de escribir el programa.
temperatura_salida puede seguir siendo comprensible meses después, para otra persona del equipo que nunca ha visto ese código.
Por eso muchas organizaciones establecen convenciones comunes para nombrar variables, funciones y archivos.
El objetivo no es que el código «quede bonito».
El objetivo es que todo el equipo utilice el mismo lenguaje.
3. Reglas básicas para los nombres
Los nombres de variables deben respetar algunas reglas.
Podemos utilizar, por ejemplo:
edad
edad_alumno
temperatura2
numero_alumnos
Python distingue entre mayúsculas y minúsculas:
edad
Edad
EDAD
son nombres distintos.
Para las variables ordinarias es habitual escribir nombres en minúsculas y separar las palabras mediante guion bajo:
numero_alumnos
precio_total
distancia_recorrida
Lo importante, especialmente al comenzar, no es memorizar una colección interminable de reglas de estilo.
Lo importante es adquirir un hábito:
Antes de escribir un nombre, piensa qué información representa.
4. Los valores tienen un tipo
No todos los datos significan lo mismo.
Observa:
edad = 25
altura = 1.75
nombre = "Carlos"
activo = True
Python distingue diferentes tipos de valores.
Los cuatro fundamentales para empezar son:
| Tipo | Ejemplo | Representa |
|---|---|---|
int | 25 | números enteros |
float | 1.75 | números con parte decimal |
str | "Carlos" | cadenas de texto |
bool | True | verdadero o falso |
Podemos preguntarle a Python por el tipo de un valor utilizando:
type()
Por ejemplo:
edad = 25
print(type(edad))
y:
altura = 1.75
print(type(altura))
Nombre, valor y tipo

Conviene separar muy pronto estas tres ideas.
En:
altura_m = 1.72
tenemos:
nombre → altura_m
valor → 1.72
tipo → float
El nombre lo elegimos nosotros.
El valor es el dato con el que estamos trabajando.
El tipo indica cómo interpreta Python ese valor y qué operaciones tienen sentido con él.
En un proyecto real
Elegir un tipo de dato no es solo una cuestión sintáctica.
En proyectos reales puede influir en la precisión, en el espacio que ocupa la información o en la forma de intercambiar datos con sensores, bases de datos o protocolos.
Aquí nos basta con comprender los tipos básicos. Más adelante veremos casos en los que elegir el tipo correcto se vuelve una decisión técnica importante.
5. Las variables pueden cambiar
El propio nombre ya nos da una pista: una variable puede recibir diferentes valores durante la ejecución del programa.
Por ejemplo:
puntos = 100
Más adelante:
puntos = 150
El nombre sigue siendo:
puntos
pero su valor ha cambiado.
6. Constantes: valores que decidimos mantener
Hay datos que queremos mantener iguales durante todo el programa.
Podemos escribir:
PI = 3.141592
o:
KM_A_MILLAS = 0.621371
En Python, escribir el nombre en mayúsculas no impide técnicamente modificarlo.
Es una convención.
Le estamos diciendo a cualquier persona que lea el programa:
este valor se ha definido para permanecer constante; no deberíamos cambiarlo durante la ejecución.
En un proyecto real: una constante también centraliza una decisión
Imagina que diferentes partes de una aplicación necesitan utilizar π.
Un programador escribe:
area = 3.14 * radio ** 2
otro:
longitud = 3.1416 * diametro
y otro utiliza todavía más decimales.
Los cálculos pueden producir pequeñas diferencias.
Si el proyecto define una única constante:
PI = 3.141592
todos los componentes utilizan el mismo valor y la misma precisión.
Eso facilita que los resultados sean comparables y reproducibles.
Además, si el proyecto decide modificar esa precisión, existe un único lugar donde cambiarla.
La utilidad de una constante no consiste únicamente en evitar escribir un número varias veces.
También puede representar una decisión común del proyecto.
7. Los operadores permiten trabajar con los valores

/, // y % responden a preguntas diferentes sobre una división.Una vez disponemos de datos podemos realizar operaciones con ellos.
Python dispone de diferentes familias de operadores.
Operadores aritméticos
| Operador | Operación |
|---|---|
+ | suma |
- | resta |
* | multiplicación |
/ | división |
// | cociente entero |
% | resto o módulo |
** | potencia |
Por ejemplo:
x = 10
y = 3
print(x + y)
print(x - y)
print(x * y)
obtendremos:
13
7
30
8. /, // y %: tres operaciones diferentes
Estos tres operadores merecen algo más de atención.
Si escribimos:
10 / 3
obtenemos una división ordinaria:
3.333...
Pero:
10 // 3
obtiene el cociente entero:
3
Y:
10 % 3
obtiene el resto:
1
Podemos verlo con un ejemplo sencillo:
caramelos = 10
amigos = 3
por_persona = caramelos // amigos
sobran = caramelos % amigos
El resultado representa:
3 caramelos para cada persona
1 caramelo sin repartir
Prueba mentalmente
¿Qué valores tendrán estas variables?
caramelos = 17
amigos = 5
por_persona = caramelos // amigos
sobran = caramelos % amigos
Antes de seguir, intenta resolverlo sin ejecutar el programa.
por_persona → 3
sobran → 2
En un proyecto real
// y % no sirven únicamente para repartir caramelos.
También aparecen al trabajar con:
- bloques de datos;
- páginas;
- índices;
- tiempos;
- recursos distribuidos en grupos;
- cálculos periódicos.
Un operador muy sencillo puede terminar formando parte de aplicaciones bastante más complejas.
9. Operadores de asignación combinada
Supongamos que tenemos:
puntos = 100
y queremos sumar 50.
Podemos escribir:
puntos = puntos + 50
Pero Python permite expresar lo mismo así:
puntos += 50
También podemos utilizar:
puntos -= 20
puntos *= 2
puntos /= 2
puntos //= 2
El nombre de la variable permanece, mientras su valor va cambiando.
10. Comparar también produce un resultado
Podemos comparar valores utilizando operadores relacionales:
==
!=
>
<
>=
<=
Por ejemplo:
edad = 20
edad >= 18
El resultado de esa expresión es:
True
Mientras que:
edad < 18
produce:
False
Es importante comprender esta idea:
Una comparación también produce un valor.
Y ese valor tiene un tipo:
bool
Prueba mentalmente
edad = 17
acompanado = True
edad >= 18 or acompanado
¿El resultado será True o False?
La primera comparación es falsa, pero acompanado vale True. Con or, basta con que una de las dos partes sea verdadera:
True
11. and, or y not
También podemos combinar valores booleanos.
and
Solo produce True cuando ambas partes son verdaderas.
True and True
da:
True
or
Produce True cuando al menos una de las partes es verdadera.
True or False
da:
True
not
Invierte el valor:
not True
da:
False
Pero resulta más interesante utilizarlos con expresiones que tengan significado.
Por ejemplo:
nota = 6.5
asistencia = 87
aprobado = nota >= 5 and asistencia >= 80
print(aprobado)
El resultado es:
True
En un proyecto real
Un booleano puede representar situaciones como:
sensor_activo
puerta_cerrada
dato_valido
equipo_disponible
usuario_autorizado
Al final seguimos trabajando únicamente con True o False, pero esos dos valores pueden representar condiciones muy importantes de un sistema.
Ya sabemos construir una expresión que responde True o False.
Todavía no hemos hecho que el programa actúe de manera diferente según ese resultado.
Eso será el siguiente paso.
12. Convertir un tipo de dato
A veces necesitamos transformar un valor de un tipo a otro.
Python dispone, entre otras, de estas funciones:
str()
int()
float()
bool()
Por ejemplo:
edad_texto = "25"
edad = int(edad_texto)
Antes:
"25" → str
Después:
25 → int
También:
altura_texto = "1.72"
altura = float(altura_texto)
transforma:
"1.72"
en:
1.72
13. input(): recibir información del usuario

input() devuelve texto; si necesitamos calcular con el dato, debemos convertirlo.Hasta ahora hemos escrito los valores directamente en el programa:
edad = 25
Pero normalmente queremos que el usuario pueda introducirlos.
Para eso utilizamos:
input()
Por ejemplo:
nombre = input("Introduce tu nombre: ")
Si el usuario escribe:
Carlos
la variable nombre contendrá ese texto.
Hay una idea fundamental:
input()devuelve texto.
Incluso si el usuario escribe:
25
lo que inicialmente obtenemos es:
"25"
un str.
Por eso escribiremos:
edad = int(input("Introduce tu edad: "))
o:
altura = float(input("Introduce tu altura: "))
Por ahora hacemos una suposición
Estamos empezando.
Así que, de momento, vamos a suponer que el usuario introduce correctamente lo que le pedimos.
Si preguntamos:
Edad:
esperamos algo como:
25
y no:
veinticinco
En una aplicación real no podemos confiar siempre en eso.
El usuario puede equivocarse, escribir un valor inesperado o dejar una información incompleta.
Más adelante aprenderemos a detectar y gestionar esas situaciones.
Ahora interesa comprender primero el mecanismo básico:
entrada → conversión → dato
14. print(): mostrar información
Para mostrar información utilizamos:
print()
Por ejemplo:
nombre = "Carlos"
edad = 25
print(nombre)
print(edad)
También podemos combinar texto y variables:
print("Nombre:", nombre)
print("Edad:", edad)
15. Formatear la salida
También podemos insertar valores dentro de un texto utilizando especificadores como:
%s
%i
%f
Por ejemplo:
nombre = "Carlos"
edad = 25
altura = 1.75
print("Hola %s, tienes %i años y mides %.2f m." % (nombre, edad, altura))
Obtendremos:
Hola Carlos, tienes 25 años y mides 1.75 m.
%.2f indica que queremos mostrar el número real con dos cifras decimales.
Más adelante
Python dispone de formas más modernas y potentes de construir textos con variables. Las veremos cuando corresponda.
De momento interesa comprender bien qué dato tenemos, de qué tipo es y cómo queremos mostrarlo.
16. Los comentarios: código pensado para personas
Python ignora todo lo que aparece después de # en una línea de comentario.
Por ejemplo:
# Distancia introducida por el usuario
distancia_km = 10
Pero que Python ignore un comentario no significa que sea poco importante.
El comentario está escrito para las personas.
Puede estar dirigido:
- a otro miembro del equipo;
- a quien mantenga el programa más adelante;
- o a ti mismo cuando vuelvas al código después de varios meses.
Los comentarios se escriben para quien venga después. Y muchas veces quien viene después eres tú.
17. Un comentario no debe traducir el código
Observa:
# Multiplica kilometros por 1000
metros = kilometros * 1000
El comentario prácticamente repite lo que ya podemos leer.
En cambio:
# Trabajaremos internamente todas las distancias en metros
metros = kilometros * 1000
aporta una decisión:
el programa ha elegido trabajar internamente con una unidad concreta.
Podemos resumirlo así:
El código suele explicar qué hace.
El comentario debe ayudar a entender por qué se hace, qué representa o qué decisión existe detrás.
No necesitamos comentar cada línea.
De hecho, hacerlo puede dificultar la lectura.
18. Comentarios para tu yo futuro
Un programa pequeño puede parecernos completamente evidente mientras lo estamos escribiendo.
Seis meses después, no necesariamente.
Por eso una pregunta útil antes de abandonar un proyecto es:
¿Entenderé por qué hice esto cuando vuelva aquí dentro de un tiempo?
Si la respuesta no está clara, quizá necesitemos:
- un nombre mejor;
- un comentario;
- o ambas cosas.
19. Documentar un programa
En proyectos profesionales pueden existir normas internas para documentar los archivos.
Por ejemplo:
# ------------------------------------------------------------
# Programa: conversor_unidades.py
# Versión: 1.2
# Fecha: 02/10/2026
# Función: conversión de distancias
# ------------------------------------------------------------
No todas las organizaciones utilizan exactamente este formato.
Cada proyecto puede establecer sus propias convenciones.
Cultura profesional: control de versiones
En proyectos reales es habitual utilizar un sistema de control de versiones.
Ese sistema puede registrar:
- quién hizo un cambio;
- cuándo se hizo;
- qué se modificó;
- qué versión existía antes;
- cómo ha evolucionado el proyecto.
Por eso no siempre tiene sentido duplicar toda esa información manualmente dentro de comentarios.
La idea importante es esta:
El código forma parte de un proyecto que evoluciona y necesita poder mantenerse.
Cultura profesional: documentación generada desde el código
Existen herramientas capaces de analizar documentación estructurada incluida junto al código para generar:
- documentación técnica;
- índices;
- referencias;
- páginas de consulta;
- sistemas de búsqueda sobre grandes bibliotecas de software.
Eso significa que documentar correctamente no sirve únicamente para dejar «notas».
En proyectos grandes puede formar parte del propio sistema de documentación.
20. Todo junto: entrada, proceso y salida

Ya podemos reunir gran parte de lo aprendido en un pequeño programa.
nombre = input("Nombre: ")
distancia_km = float(input("Distancia en kilómetros: "))
KM_A_METROS = 1000
# Trabajaremos el resultado en metros
distancia_m = distancia_km * KM_A_METROS
print("Usuario:", nombre)
print("Distancia:", distancia_m, "m")
Podemos leerlo como una secuencia:
USUARIO
↓
input()
↓
conversión
↓
variables
↓
operaciones
↓
resultado
↓
print()
↓
USUARIO
Y esta idea es mucho más importante que memorizar de golpe toda la sintaxis:
Un programa recibe datos, trabaja con ellos y produce un resultado.
Recurso interactivo · ¿Entiendes este programa?
El recurso permite experimentar directamente con:
- nombres de variables;
- valores y tipos;
- asignaciones;
- operadores;
- expresiones booleanas;
- comentarios;
input();- el recorrido completo entrada → proceso → salida.
La idea no es añadir teoría nueva, sino ver cómo cambia la legibilidad de un programa cuando empezamos a escribirlo pensando también en quien tendrá que leerlo.
21. Antes de dar por terminado un programa
Aunque nuestro programa sea pequeño, merece la pena adquirir desde el principio algunos hábitos.
¿Los nombres explican qué representa cada dato?
distancia_km
es mucho más informativo que:
d
si no existe una buena razón para abreviarlo.
¿He utilizado el tipo adecuado?
25
no significa lo mismo para Python que:
"25"
¿He convertido correctamente lo recibido mediante input()?
Si necesitamos calcular con el dato, probablemente tendremos que transformarlo.
¿Sé qué resultado produce cada operador?
Especialmente:
/
//
%
¿Los comentarios aportan información?
¿O simplemente están traduciendo literalmente el código?
¿Podría entender este programa dentro de seis meses?
Probablemente esta sea la pregunta más importante de todas.
Ideas esenciales
- Una variable es un nombre que permite referirnos a un valor.
- Los nombres importan porque el código no está escrito únicamente para el ordenador: también debe poder ser entendido por personas.
- Los valores tienen diferentes tipos. Hemos trabajado con
int,float,strybool. - Una constante representa un valor que decidimos mantener estable mediante una convención de programación.
- Los operadores permiten calcular, comparar, combinar expresiones y modificar valores.
- Una comparación puede producir
TrueoFalsesin que todavía tengamos que tomar ninguna decisión con ese resultado. input()recibe información como texto.- Cuando necesitamos números debemos convertirlos, por ejemplo, mediante
int()ofloat(). print()permite mostrar información y combinar texto con los resultados de nuestro programa.- Existen formas más avanzadas de formatear texto que veremos más adelante.
- Los comentarios sirven para aportar intención, contexto y documentación, no para repetir línea por línea lo que el código ya expresa.
- En proyectos reales aparecen además convenciones de equipo, control de versiones y herramientas de documentación.
Una última idea
Un programa puede ejecutarse correctamente y, aun así, estar mal escrito.
Por eso desde el principio conviene adquirir un hábito:
Párate un momento antes de escribir.
¿Qué representa este dato?
¿Cómo debería llamarlo?
¿Necesita una explicación?
¿Lo entenderé cuando vuelva aquí dentro de unos meses?
Conseguir que Python entienda nuestro programa es imprescindible.
Conseguir que también lo entiendan las personas forma parte de aprender a programar.
Ponlo en práctica
Cinco problemas para practicar variables, tipos de datos, operadores y entrada/salida directamente en el navegador: escribe y ejecuta Python, prueba distintas soluciones y compara tu propuesta con una solución orientativa cuando lo necesites.
Abrir los ejercicios ↗






