
Chismes del Lince 189: ¿Cuántos genes raros hay? (genes raros Python)
El laboratorio de la Reserva de Sierra Bermeja le ha mandado al Lince de la Noche un correo con una lista de números:
18, 22, 41, 25, 37, 20, 44, 23, 30, 19
—¿Qué es esto? —pregunta el Lince.
—Son diez muestras del mismo gen —explica la Gata Montesa—. Cada número dice cuántas veces se repite un trocito de ADN en esa muestra.
—¿Un gen? ¿Un trocito de ADN que se repite? Empieza por el principio.
—Vale. Un gen es como una receta escrita en el ADN: le explica a la célula cómo fabricar una proteína. En algunos genes hay una «sílaba» de tres letras, CAG, que se repite una y otra vez: CAGCAGCAGCAG… Ese número de repeticiones es el que ves en la lista.
—¿Y qué tiene de importante?
—Que si se repite demasiadas veces, la receta sale demasiado larga y la proteína no funciona bien. Los científicos fijan un umbral: a partir de 40, la muestra es «rara».
El Lince se queda mirando los diez números.
—Cuento rápido: 41 y 44. Dos raras. Pero ¿y si el laboratorio me manda dos mil números?
—Para eso está Python —sonríe la Gata.
Introducción
Hoy hacemos un programa de genes raros Python: recibe una lista de números, cuenta con un bucle cuántos pasan del umbral y calcula la probabilidad de que una muestra al azar sea rara.
Solo usa una lista, un for y un if.
Por qué este chisme
El programa de genes raros Python que hacemos hoy ahorra trabajo. Contar a mano diez números es fácil. Contar dos mil, no. Y equivocarse al contar en un laboratorio no es una opción.
Además, este programa enseña tres ideas que se usan en cualquier análisis de datos: recorrer una lista, contar los casos que cumplen una condición y calcular una probabilidad.
Qué es un gen y qué significa el número de repeticiones
Antes de programar, entendamos los datos.
Un gen es un trozo de ADN que contiene la instrucción para fabricar una proteína. Tienes más de veinte mil. Puedes ampliarlo en Wikipedia: gen y en Wikipedia: ADN.
Una repetición es un trocito corto de ADN que aparece varias veces seguidas, igual que una sílaba repetida en una palabra: CAG CAG CAG CAG.
El número de repeticiones es cuántas veces seguidas aparece ese trocito. Cada persona tiene su número. En una muestra de ADN, un laboratorio lo cuenta y lo apunta.
El umbral es el número a partir del cual la muestra se considera «rara». En este chisme usamos 40, inspirado en genes reales. Cada gen tiene sus umbrales, y esto es un modelo educativo.
Cómo funciona el programa
El programa tiene tres partes:
- La lista:
muestras = [18, 22, 41, ...], con un número por muestra. - El bucle
for: mira las muestras una por una. Con unif, cada vez que una pasa del umbral, suma 1 a un contador llamadoraras. - La probabilidad:
raras / total. Es la idea de siempre: casos que nos interesan entre casos posibles.
Si ya has trabajado con decisiones, esto te recordará al árbol de decisión de la micro:bit: una pregunta, sí o no, y según la respuesta hacemos una cosa u otra.

Qué necesitamos
- Un ordenador con Python 3 y un editor, por ejemplo Thonny.
- El simulador del chisme 189 para probar la lista sin instalar nada.
El código
Crea un archivo genes189.py, pega esto y ejecútalo. Es el programa completo.
# Chisme 189 · ¿Cuántos genes raros hay? (Python muy simple)
# Cada número de la lista es el nº de repeticiones que tiene el gen en una muestra.
muestras = [18, 22, 41, 25, 37, 20, 44, 23, 30, 19]
UMBRAL = 40 # a partir de aquí consideramos la muestra "rara"
raras = 0 # contador: empieza en cero
for repeticiones in muestras: # miramos las muestras una a una
if repeticiones >= UMBRAL: # ¿pasa del umbral?
raras += 1 # entonces sumamos una rara
total = len(muestras) # cuántas muestras hay
probabilidad = raras / total # casos raros entre casos totales
print("Muestras:", total)
print("Raras:", raras)
print("Probabilidad de que una muestra al azar sea rara:", round(100 * probabilidad, 1), "%")
# Un último if para dar un mensaje
if raras == 0:
print("No hay ninguna muestra rara.")
elif probabilidad < 0.5:
print("Las muestras raras son minoría.")
else:
print("¡Más de la mitad de las muestras son raras!")
Línea a línea:
muestras = [...]: la lista de datos. Cámbiala por la tuya.UMBRAL = 40: guardamos el umbral con nombre para poder cambiarlo en un solo sitio.raras = 0: el contador empieza en cero porque aún no hemos mirado ninguna muestra.for repeticiones in muestras:: en cada vuelta,repeticionesvale una muestra distinta.if repeticiones >= UMBRAL:: pregunta si la muestra llega al umbral.raras += 1: si la respuesta es sí, suma uno al contador.len(muestras): devuelve cuántos elementos tiene la lista.raras / total: la probabilidad, entre 0 y 1.round(100 * probabilidad, 1): la pasa a porcentaje con un decimal.
Cómo probarlo
Con la lista del ejemplo debe salir:
Muestras: 10
Raras: 2
Probabilidad de que una muestra al azar sea rara: 20.0 %
Las muestras raras son minoría.
Cambia el umbral a 35 y ejecútalo otra vez: ahora hay tres raras (37, 41 y 44) y la probabilidad sube a 30 %.
Qué estamos midiendo realmente
El programa no mide ADN: solo cuenta números que ya nos dio un laboratorio.
Además, la probabilidad que calcula es una frecuencia: de estas diez muestras, el 20 % es rara. Si las muestras no representan bien a toda la población, el resultado no se puede generalizar.
Con diez muestras, un solo dato cambia el resultado en un 10 %. Con muchas, el resultado es más fiable.
Para el aula
- Lee y predice: antes de ejecutar, cuenta a mano las raras de tu lista y estima el porcentaje.
- Cambia el umbral: prueba 35, 40 y 45 y anota cómo cambia el resultado. ¿Quién decide dónde se pone el umbral?
- Lista vacía: ¿qué pasa con
muestras = []? ¿Cómo lo evitarías con unif? - Datos de clase: cada alumno inventa una lista de 10 números; juntad las listas y calculad la probabilidad global.
Retos
- Haz que funcione: ejecuta el programa con la lista del ejemplo.
- Modifica algo: cambia el umbral y la lista.
- Añade tres niveles: usa
elifpara distinguir normal (hasta 26), dudoso (27 a 39) y raro (40 o más). - Guarda los datos: lee la lista desde un archivo de texto.
- Represéntalos: dibuja con
matplotlibun gráfico de barras de la lista. - Automatiza: genera una lista de 1000 muestras con
random.randint(10, 50)y cuenta las raras. - Haz que otro participe: que un compañero te pase su lista y compara resultados.
- Pequeña investigación: con listas aleatorias de 10, 100 y 1000 muestras, ¿cuánto varía el porcentaje?
Qué hemos aprendido
Hemos hecho un programa de genes raros Python que recorre una lista con un bucle, cuenta con un if y calcula una probabilidad.
Ahora sabemos qué es un gen, qué significa el número de repeticiones y por qué un umbral decide qué muestras llaman la atención.
Para seguir investigando
- Chisme 190: la moneda de la herencia: si un progenitor lleva el gen, ¿qué probabilidad tienen sus hijos?
- Chisme 45: el árbol de la micro:bit.
- Chisme 46: el dado de la Pi Pico, números aleatorios.
- Tutorial de Python: bucles y condiciones.
Este chisme es un prototipo educativo con datos inventados, no una herramienta médica.
Etiqueta:bachillerato, bucle for, condicional if, genética, listas, probabilidad, python

