Blog

Programación con Python: Condicionales

Los condicionales son una parte fundamental de la programación que nos permite controlar el flujo de ejecución de un programa. En Python se utilizan principalmente tres tipos de condicionales: if, elif (opcional) y else. A continuación mostraremos cómo utilizarlos con ejemplos para comprender mejor su funcionamiento.

Condicionales «if»

El condicional if se utiliza para ejecutar un bloque de código solo si una condición es verdadera. En el siguiente ejemplo, si la variable edad es mayor o igual a 18, se imprimirá «Eres mayor de edad.»:

edad = 18

if edad >= 18:
    print("Eres mayor de edad.")

Condicionales «if» y «else»

El condicional else se utiliza para ejecutar un bloque de código cuando la condición del if es falsa. En el siguiente ejemplo, si la variable edad es mayor o igual a 18, se imprimirá «Eres mayor de edad.», y en caso contrario, se imprimirá «Eres menor de edad.»:

edad = 15

if edad >= 18:
    print("Eres mayor de edad.")
else:
    print("Eres menor de edad.")

Condicionales «if», «elif» y «else»

El condicional elif (abreviatura de «else if») se utiliza para evaluar múltiples condiciones. Se verifica solo si la condición del if anterior es falsa. En el siguiente ejemplo, el programa evalúa la variable calificacion y muestra diferentes mensajes dependiendo del rango en el que se encuentre:

calificacion = 85

if calificacion >= 90:
    print("Tienes una A.")
elif calificacion >= 80:
    print("Tienes una B.")
elif calificacion >= 70:
    print("Tienes una C.")
else:
    print("Tienes una calificación inferior a C.")

Uso de operadores lógicos en condicionales

Podemos combinar múltiples condiciones utilizando los operadores lógicos and (y), or (o) y not (no). En el siguiente ejemplo se evalúa tanto la temperatura como si es un día soleado o no, utilizando el operador and. Si ambas condiciones son verdaderas, se imprimirá «Hace calor y es un día soleado.» Si al menos una de las condiciones es verdadera (usando el operador or), se imprimirá «Hace calor o es un día soleado.» De lo contrario, se imprimirá «No hace calor y no es un día soleado.»:

temperatura = 25
dia_soleado = True

if temperatura > 30 and dia_soleado:
    print("Hace calor y es un día soleado.")
elif temperatura > 30 or dia_soleado:
    print("Hace calor o es un día soleado.")
else:
    print("No hace calor y no es un día soleado.")

Condicionales anidados

Se pueden anidar condicionales dentro de otros condicionales para manejar situaciones más complejas. En el siguiente ejemplo, se verifica primero si la persona es mayor o igual a 18 años. Si es así, se verifica si tiene carnet de conducir para determinar si puede conducir o no:

edad = 25
carnet_conducir = True

if edad >= 18:
    if carnet_conducir:
        print("Puedes conducir.")
    else:
        print("Eres mayor de edad, pero no puedes conducir.")
else:
    print("Eres menor de edad.")

Sentencia match-case

Antes de Python 3.10, las comparaciones múltiples se realizaban utilizando la estructura if-elif-else, lo que podía llevar a una sintaxis un tanto repetitiva y menos legible en ciertos casos. El nuevo match case resuelve este problema ya que permite realizar comparaciones más elegantes y fáciles de leer.

Sintaxis básica

La sintaxis del match case se asemeja a una declaración switch en otros lenguajes de programación. Su forma básica es la siguiente:

match valor:
    case patron1:
        # código a ejecutar si el valor coincide con patron1
    case patron2:
        # código a ejecutar si el valor coincide con patron2
    ...
    case patronN:
        # código a ejecutar si el valor coincide con patronN
    case _:
        # código a ejecutar si no se cumple ninguno de los patrones anteriores

Un ejemplo muy sencillo

En su forma más sencilla, el match case permite comprobar coincidencias con valores específicos de cualquier tipo (números, cadenas, etc). Por ejemplo, utilizando el código del siguiente ejemplo podemos determinar el estado civil de una persona basándonos en el valor de la variable codigo:

match codigo:
    case "S":
        print("Soltero/a")
    case "C":
        print("Casado/a")
    case "D":
        print("Divorciado/a")
    case "V":
        print("Viudo/a")
    case _:
        print("Código inválido")

Equivalencia entre «if-elif-else» y «match-case»

Supongamos que queremos determinar el día de la semana correspondiente a un número del 1 al 7, donde 1 representa el lunes y 7 representa el domingo.

Usando if-elif-else:

if numero == 1:
    print("Lunes")
elif numero == 2:
    print("Martes")
elif numero == 3:
    print("Miércoles")
elif numero == 4:
    print("Jueves")
elif numero == 5:
    print("Viernes")
elif numero == 6:
    print("Sábado")
elif numero == 7:
    print("Domingo")
else:
    print("Número inválido")

Usando match case:

match numero:
    case 1:
        print("Lunes")
    case 2:
        print("Martes")
    case 3:
        print("Miércoles")
    case 4:
        print("Jueves")
    case 5:
        print("Viernes")
    case 6:
        print("Sábado")
    case 7:
        print("Domingo")
    case _:
        print("Número inválido")

Como se puede apreciar, el uso del match case reduce significativamente la cantidad de consultas que se realizan para comprobar el valor de la variable numero y hace que el código resultante sea más fácil de leer.

Combinación de patrones

El match case también permite combinar múltiples patrones utilizando la sintaxis case patron1 | patron2 | ...:. En el siguiente ejemplo agrupamos diversos valores de una nota numérica con el propósito de mostrar el texto descriptivo de la calificación que se haya obtenido:

match nota:
    case 0 | 1 | 2 | 3 | 4:
        print("Suspendido")
    case 5 | 6:
        print("Aprobado")
    case 7 | 8:
        print("Notable")
    case 9 | 10:
        print("Sobresaliente")
    case _:
        print("Nota no válida")

Además Python nos permite comprobar coincidencias con datos de cualquier tipo (cadenas, listas, tuplas, diccionarios, etc). Vamos a ver un ejemplo en el que tenemos una lista de alimentos representados por cadenas de texto. Utilizamos el match case para clasificar cada alimento en diferentes categorías: «Frutas», «Verduras», «Proteínas» o «Carbohidratos». Si el alimento no coincide con ninguna de estas categorías, lo clasificamos como «Desconocido». De esta forma, el match case nos permitirá clasificar rápidamente cada alimento en su respectiva categoría sin tener que escribir múltiples sentencias if-elif-else, y por lo tanto obtenemos un código más simple y fácil de entender:

match alimento:
    case "manzana" | "pera" | "plátano" | "uva":
        print("Frutas")
    case "zanahoria" | "tomate" | "espinaca" | "lechuga":
        print("Verduras")
    case "pollo" | "pescado" | "res" | "cerdo":
        print("Proteínas")
    case "arroz" | "pasta" | "pan" | "patata":
        print("Carbohidratos")
    case _:
        print("Desconocido")

Consideraciones adicionales

Es importante tener en cuenta que el match case es una característica introducida en Python 3.10, por lo que si estamos utilizando una versión anterior, esta funcionalidad no estará disponible. Además, es recomendable utilizar el match case sólo cuando el código resulte más legible o apropiado para el problema en cuestión. En muchos casos, la estructura if-elif-else tradicional puede ser resultar más adecuada por motivos de compatibilidad o en caso de que podamos resolver nuestro problema utilizando expresiones booleanas sencillas.

Test

Evalúa tus conocimientos mediante este test que incluye preguntas relacionadas con esta unidad.

Programación con Python: Conversiones entre datos básicos

En Python se pueden convertir datos de un tipo a otro utilizando funciones integradas o métodos específicos para cada tipo de dato. Estas conversiones son útiles cuando necesitamos operar con diferentes tipos de datos o cuando queremos mostrar información en un formato específico. A continuación detallaremos las conversiones más comunes en Python, y proporcionaremos ejemplos prácticos para cada caso.

Conversión a enteros (int)

Podemos convertir datos a enteros utilizando la función int():

# Convertir un número decimal a entero
decimal = 5.75
entero = int(decimal)  # 5 (se descarta la parte decimal)

# Convertir una cadena numérica a entero
cadena_numero = "123"
entero_desde_cadena = int(cadena_numero)  # 123

Conversión a flotantes (float)

Podemos convertir datos a números flotantes utilizando la función float():

# Convertir un entero a número flotante
entero = 10
flotante_desde_entero = float(entero)  # 10.0

# Convertir una cadena numérica a número flotante
cadena_numero = "3.14"
flotante_desde_cadena = float(cadena_numero)  # 3.14

Conversión a cadenas (str)

Podemos convertir datos a cadenas utilizando la función str():

# Convertir un número entero a cadena
entero = 42
cadena_desde_entero = str(entero)  # "42"

# Convertir un número flotante a cadena
flotante = 3.14
cadena_desde_flotante = str(flotante)  # "3.14"

Conversión a booleanos (bool)

Podemos convertir datos a booleanos utilizando la función bool(). En general, los siguientes valores se evaluarán como False en Python, y todo lo demás se evaluará como True:

  • Cualquier número que sea 0 (entero o flotante).
  • Cadenas vacías.
  • Listas, tuplas, diccionarios o conjuntos vacíos.
  • El valor especial None.
# Convertir un número entero a booleano
entero = 10
booleano_desde_entero = bool(entero)  # True

# Convertir un número flotante a booleano
flotante = 0.0
booleano_desde_flotante = bool(flotante)  # False

# Convertir una cadena a booleano
cadena_vacia = ""
booleano_desde_cadena = bool(cadena_vacia)  # False

# Convertir una lista vacía a booleano
lista_vacia = []
booleano_desde_lista = bool(lista_vacia)  # False

# Convertir un valor None a booleano
valor_nulo = None
booleano_desde_nulo = bool(valor_nulo)  # False

Conversión a otras bases o representaciones

En Python también podemos convertir datos a representaciones en formato binario, octal o hexadecimal utilizando las funciones bin(), oct() y hex():

numero = 42

# Convertir a binario
binario = bin(numero)  # '0b101010'

# Convertir a octal
octal = oct(numero)    # '0o52'

# Convertir a hexadecimal
hexadecimal = hex(numero)  # '0x2a'

Es importante tener en cuenta que no todos los tipos de datos se pueden convertir a todas las representaciones. Por ejemplo, no podemos convertir una cadena a binario directamente.

Test

Evalúa tus conocimientos mediante este test que incluye preguntas relacionadas con esta unidad.

Programación con Python: Cadenas de texto

Las cadenas de texto (también conocidas como strings) son secuencias de caracteres encerradas entre comillas simples o comillas dobles, y nos permiten almacenar y manipular texto en los programas. En Python, las cadenas son objetos inmutables, lo que significa que no se pueden modificar una vez creadas, pero podemos crear nuevas cadenas a partir de ellas con diferentes manipulaciones. Vamos a detallar a continuación la sintaxis básica relacionada con las cadenas, e incluiremos ejemplos prácticos.

Creación de cadenas

Podemos crear una cadena asignando un valor entre comillas (simples o dobles) a una variable:

mensaje = "Hola, Python!"
nombre = 'María'
direccion = "Calle San José, 123"

También podemos utilizar triples comillas (simples o dobles) para crear cadenas de varias líneas:

parrafo = """Este es un ejemplo
de una cadena con varias líneas.
Puedes usar triples comillas para ello."""

Operaciones con cadenas

Longitud de una cadena

Podemos obtener la longitud de una cadena utilizando la función len():

mensaje = "Hola, Python!"
longitud = len(mensaje)  # 13 (incluyendo espacios y signos de puntuación)

Concatenación

Podemos unir cadenas utilizando el operador +:

saludo = "Hola, "
nombre = "María"
mensaje_completo = saludo + nombre  # "Hola, María"

Repetición

Podemos repetir una cadena utilizando el operador *:

cadena = "abc"
repetida = cadena * 3  # "abcabcabc"

Indexación y segmentación

Las cadenas son secuencias de caracteres, lo que significa que podemos acceder a caracteres individuales utilizando índices y también podemos segmentar la cadena para obtener subcadenas:

texto = "Python es genial"

primer_caracter = texto[0]  # "P" (el primer carácter tiene índice 0)
ultimo_caracter = texto[-1]  # "l" (el último carácter tiene índice -1)

segmento = texto[7:9]  # "es" (segmento desde el índice 7 hasta el índice 8, no incluye el índice 9)

# También puedes omitir el índice de inicio o de fin para segmentar desde el principio o hasta el final, respectivamente.
inicio_omitiendo = texto[:6]  # "Python"
fin_omitiendo = texto[10:]   # "genial"

Búsqueda en cadenas

Podemos buscar subcadenas dentro de una cadena utilizando los métodos find() e index():

texto = "Python es un lenguaje de programación"
posicion_find = texto.find("lenguaje")  # 13 (posición de la primera ocurrencia)
posicion_index = texto.index("lenguaje")  # 13 (posición de la primera ocurrencia)

# Si la subcadena no se encuentra, find() devuelve -1, mientras que index() genera una excepción ValueError.
posicion_find_no_encontrada = texto.find("Java")  # -1
posicion_index_no_encontrada = texto.index("Java")  # ValueError: substring not found

Reemplazo y formato

Podemos reemplazar subcadenas en una cadena utilizando el método replace():

mensaje = "Hola, NAME!"
nuevo_mensaje = mensaje.replace("NAME", "María")  # "Hola, María!"

También podemos utilizar el método format() para que la cadena incluya los valores de diferentes variables:

nombre = "Juan"
edad = 30
saludo = "Hola, mi nombre es {} y tengo {} años.".format(nombre, edad)
# "Hola, mi nombre es Juan y tengo 30 años."

Caracteres especiales

Python admite varios caracteres especiales que se pueden incluir en las cadenas, como por ejemplo:

  • \n: Nueva línea.
  • \t: Tabulación.
  • \': Comilla simple.
  • \": Comilla doble.
  • \\: Barra invertida.
mensaje_multilinea = "Hola,\nPython!"
print(mensaje_multilinea)
# Salida:
# Hola,
# Python!

mensaje_tabs = "Hola,\tPython!"
print(mensaje_tabs)
# Salida: Hola,    Python!

mensaje_comillas = "Ella dijo: \"Hola, Python!\""
print(mensaje_comillas)
# Salida: Ella dijo: "Hola, Python!"

Métodos útiles para cadenas

Python incluye varios métodos para trabajar con cadenas. Algunos de los más útiles son:

texto = "Python es un lenguaje de programación"

# Convertir a mayúsculas y minúsculas
texto_mayusculas = texto.upper()  # "PYTHON ES UN LENGUAJE DE PROGRAMACIÓN"
texto_minusculas = texto.lower()  # "python es un lenguaje de programación"

# Capitalizar la primera letra de la cadena
texto_capitalizado = texto.capitalize()  # "Python es un lenguaje de programación"

# Contar ocurrencias de una subcadena
ocurrencias = texto.count("a")  # 3 (número de veces que aparece "a" en la cadena)

# Verificar si una cadena comienza o termina con una subcadena
comienza_con = texto.startswith("Python")  # True
termina_con = texto.endswith("programación")  # True

# Separar una cadena en una lista de subcadenas por un carácter específico
palabras = texto.split(" ")  # ['Python', 'es', 'un', 'lenguaje', 'de', 'programación']

# Eliminar espacios en blanco al principio y al final de la cadena
texto_limpio = "   Hola, Python!   "
texto_sin_espacios = texto_limpio.strip()  # "Hola, Python!"

F-strings

Las f-strings (o cadenas formateadas) nos proporcionan una forma muy legible para construir cadenas en Python (están disponibles a partir de la versión 3.6). Las f-strings nos permiten incorporar expresiones dentro de las cadenas, lo que facilita la inclusión de variables y otros valores en ellas sin tener que utilizar métodos de formato o concatenación. Para usar f-strings, simplemente debemos colocar una «f» o «F» antes del inicio de la cadena y luego añadimos las expresiones utilizando llaves {} dentro de la cadena:

nombre = "Juan"
edad = 30

# Usando f-string para formatear la cadena
mensaje = f"Hola, mi nombre es {nombre} y tengo {edad} años."
print(mensaje)
# Salida: "Hola, mi nombre es Juan y tengo 30 años."

Las expresiones dentro de las llaves serán evaluadas y su valor se incluirá en la cadena final. Se puede incluir cualquier tipo de expresión válida dentro de las llaves, como operaciones matemáticas, llamadas a funciones, y más:

a = 10
b = 5

# Operaciones matemáticas dentro de una f-string
resultado = f"La suma de {a} y {b} es {a + b}, y el producto es {a * b}."
print(resultado)
# Salida: "La suma de 10 y 5 es 15, y el producto es 50."

También se puede aplicar formato a las expresiones dentro de las llaves. Por ejemplo, podemos especificar la cantidad de decimales para un número flotante o el ancho para un número entero:

precio = 9.99

# Formato de número flotante dentro de una f-string
mensaje_precio = f"El precio es: ${precio:.2f}"
print(mensaje_precio)
# Salida: "El precio es: $9.99"

cantidad = 100

# Formato de número entero dentro de una f-string
mensaje_cantidad = f"La cantidad es: {cantidad:05d}"
print(mensaje_cantidad)
# Salida: "La cantidad es: 00100"

En el ejemplo anterior, :.2f indica que queremos mostrar el número flotante con dos decimales, mientras que :05d indica que queremos que el número entero tenga un ancho de 5 dígitos, rellenando con ceros a la izquierda si es necesario.

Test

Evalúa tus conocimientos mediante este test que incluye preguntas relacionadas con esta unidad.

Programación con Python: Operadores

Los operadores en Python son símbolos especiales que se emplean para realizar diferentes acciones y cálculos utilizando variables y valores. Estas operaciones pueden ser matemáticas, de comparación, lógicas, de asignación, etc. Los operadores son fundamentales en la programación, ya que nos permiten realizar cálculos, tomar decisiones y manipular datos de manera eficiente.

Operadores Aritméticos

Los operadores aritméticos se utilizan para realizar operaciones matemáticas en números. Aquí están los principales operadores aritméticos en Python:

  • Suma (+): Suma dos valores.
  • Resta (-): Resta el segundo valor del primero.
  • Multiplicación (*): Multiplica dos valores.
  • División (/): Divide el primer valor por el segundo. Siempre devuelve un flotante.
  • División entera (//): Divide el primer valor por el segundo y redondea el resultado hacia abajo al entero más cercano.
  • Módulo (%): Devuelve el resto de la división entera entre el primer valor y el segundo.
  • Potencia (**): Eleva el primer valor a la potencia del segundo.
a = 10
b = 3

suma = a + b          # 13
resta = a - b         # 7
producto = a * b      # 30
division = a / b      # 3.3333333333333335
division_entera = a // b  # 3
resto = a % b         # 1
potencia = a ** b     # 1000

Operadores de Comparación

Los operadores de comparación se utilizan para comparar dos valores y devuelven un valor booleano (True o False). Aquí están los principales operadores de comparación en Python:

  • Igual que (==): Comprueba si los valores son iguales.
  • Diferente que (!=): Comprueba si los valores son diferentes.
  • Mayor que (>): Comprueba si el primer valor es mayor que el segundo.
  • Menor que (<): Comprueba si el primer valor es menor que el segundo.
  • Mayor o igual que (>=): Comprueba si el primer valor es mayor o igual que el segundo.
  • Menor o igual que (<=): Comprueba si el primer valor es menor o igual que el segundo.
x = 10
y = 5

igual_que = x == y               # False
diferente_que = x != y           # True
mayor_que = x > y                # True
menor_que = x < y                # False
mayor_o_igual_que = x >= y       # True
menor_o_igual_que = x <= y       # False

Operadores Lógicos

Los operadores lógicos se utilizan para combinar expresiones booleanas y devuelven un valor booleano. Aquí están los principales operadores lógicos en Python:

  • and (y): Devuelve True si ambas expresiones son verdaderas.
  • or (o): Devuelve True si al menos una de las expresiones es verdadera.
  • not (no): Devuelve el valor opuesto de la expresión.
a = True
b = False

resultado_and = a and b         # False
resultado_or = a or b           # True
resultado_not_a = not a         # False
resultado_not_b = not b         # True

Operadores de Pertenencia

Los operadores de pertenencia se utilizan para comprobar si un valor está presente en una secuencia, como una lista, tupla o cadena.

  • in: Devuelve True si el valor está presente en la secuencia.
  • not in: Devuelve True si el valor no está presente en la secuencia.
mi_lista = [1, 2, 3, 4, 5]

esta_en_lista = 3 in mi_lista         # True
no_esta_en_lista = 6 not in mi_lista  # True

mi_cadena = "Hola, Python!"

esta_en_cadena = "Python" in mi_cadena          # True
no_esta_en_cadena = "Java" not in mi_cadena     # True

Operadores de Identidad

Los operadores de identidad se utilizan para comparar si dos variables se refieren al mismo objeto en memoria.

  • is: Devuelve True si ambas variables apuntan al mismo objeto.
  • is not: Devuelve True si ambas variables no apuntan al mismo objeto.
a = [1, 2, 3]
b = a  # b apunta a la misma lista en memoria que a

es_mismo_objeto = a is b         # True

c = [1, 2, 3]

es_distinto_objeto = a is not c  # True

Operadores de Asignación

Los operadores de asignación se utilizan para asignar valores a variables.

  • = : Asignación básica.
  • += : Asignación con suma.
  • -= : Asignación con resta.
  • *= : Asignación con multiplicación.
  • /= : Asignación con división.
a = 10

a = 5   # Ahora a tiene el valor de 5
a += 2  # Ahora a tiene el valor de 7
a -= 3  # Ahora a tiene el valor de 4
a *= 2  # Ahora a tiene el valor de 8
a /= 4  # Ahora a tiene el valor de 2.0

Operador Ternario

El operador ternario nos permite escribir una expresión condicional de una forma muy concisa:

edad = 18

es_mayor_edad = True if edad >= 18 else False

En este caso, es_mayor_edad será True si la edad es mayor o igual a 18, y False en caso contrario.

Test

Evalúa tus conocimientos mediante este test que incluye preguntas relacionadas con esta unidad.

Programación con Python: Variables

Las variables en Python son etiquetas o nombres que se utilizan para almacenar datos en la memoria del ordenador. Son fundamentales en la programación, ya que nos permiten guardar y manipular información de manera dinámica. A continuación explicaremos cómo declarar variables, los tipos de datos que pueden almacenar y proporcionaremos diversos ejemplos.

Declaración de variables

En Python no necesitas especificar el tipo de datos al declarar una variable, ya que es un lenguaje de tipado dinámico. Simplemente asignas un valor a un nombre de variable y Python determinará automáticamente el tipo de datos.

Para declarar una variable, se utiliza el símbolo = y luego se asigna el valor deseado:

# Declaración de variables
edad = 30
nombre = "Juan"
promedio = 9.5
es_estudiante = True

Tipos de datos básicos en Python

Números

  • int: Números enteros (por ejemplo, 10, -5, 0).
  • float: Números decimales (por ejemplo, 3.14, -2.5).
# Números
edad = 25
altura = 1.75

Texto

  • str: Cadenas de caracteres (por ejemplo, «Hola», ‘Python’).
# Texto
nombre = "María"
mensaje = '¡Hola, Python!'

Booleanos

  • bool: Puede ser True o False.
# Booleanos
es_estudiante = True
aprobo_examen = False

Operaciones con variables

Las variables se pueden utilizar en operaciones matemáticas y en la manipulación de datos:

# Operaciones con variables numéricas
a = 10
b = 5
suma = a + b
resta = a - b
producto = a * b
division = a / b
modulo = a % b
potencia = a ** b

# Operaciones con variables de texto (concatenación)
nombre = "Ana"
apellido = "Gómez"
nombre_completo = nombre + " " + apellido

# Operaciones con variables booleanas
es_dia_soleado = True
es_dia_frio = False
dia_ideal = es_dia_soleado and not es_dia_frio

Cambio del valor de una variable

Puedes cambiar el valor de una variable simplemente asignándole un nuevo valor:

edad = 30
print(edad)  # Salida: 30

edad = 40
print(edad)  # Salida: 40

Convenciones para nombrar variables

  • Los nombres de las variables deben ser descriptivos y estar en minúsculas.
  • Si un nombre de variable tiene varias palabras, se recomienda usar guiones bajos entre las palabras (snake_case).
  • Evita usar nombres reservados por Python, como if, else, for, while, etc.

Ejemplos:

# Ejemplo de nombres de variables apropiados
nombre_completo = "Juan Pérez"
numero_telefono = "1234567890"
total_puntos = 100

# Evitar nombres de variables no descriptivos
a = "Hola"
b = 50
x = True

Test

Evalúa tus conocimientos mediante este test que incluye preguntas relacionadas con esta unidad.

Datos curiosos sobre reptiles

Datos curiosos

  • Las serpientes pueden detectar vibraciones en el suelo y sentir la presencia de presas cercanas.
  • Las tortugas marinas pueden viajar miles de kilómetros en el océano durante sus migraciones.
  • Algunas serpientes, como la pitón reticulada, pueden comer una sola vez al año y luego pasar varios meses digiriendo la comida.
  • Los cocodrilos pueden cerrar sus fosas nasales y oídos mientras están debajo del agua.
  • Los caimanes y los cocodrilos tienen una mordida extremadamente fuerte que puede aplastar los huesos de sus presas con facilidad.
  • Los cocodrilos tienen una glándula especial en su boca que les permite eliminar el exceso de sal de su cuerpo, lo que les permite vivir en agua salada.
  • Algunas especies de serpientes son ovíparas, lo que significa que ponen huevos, mientras que otras son ovovivíparas, lo que significa que incuban los huevos dentro de su cuerpo y dan a luz a crías vivas.
  • El lagarto chino es capaz de correr sobre el agua a una velocidad de hasta 1,5 metros por segundo.
  • Las serpientes no tienen orejas externas, pero sí tienen oídos internos que les permiten detectar sonidos de baja frecuencia.
  • Las iguanas tienen una lengua muy sensible que les ayuda a detectar la presencia de depredadores y alimentos.
  • Los reptiles más antiguos conocidos son los cocodrilos, que han existido en la Tierra durante más de 200 millones de años.
  • Las serpientes pueden regular su temperatura corporal exponiendo diferentes partes de su cuerpo al sol o a la sombra.
  • Las serpientes tienen un sentido del olfato muy desarrollado que les permite detectar presas y depredadores a larga distancia.
  • Algunas especies de serpientes pueden cambiar el color de su piel para camuflarse con el entorno y evitar ser detectadas por depredadores.
  • El camaleón pantera es capaz de lanzar su lengua a una velocidad de hasta 6 metros por segundo para capturar insectos.
  • Los cocodrilos tienen una estructura especial en sus ojos llamada «tapetum lucidum» que les permite ver con poca luz.
  • Las serpientes marinas tienen glándulas salinas en sus cabezas que les permiten eliminar el exceso de sal de su cuerpo mientras beben agua de mar.
  • El lagarto de lengua azul, que vive en Australia, tiene una lengua muy larga y azul que usa para asustar a los depredadores.
  • Las tortugas tienen un caparazón duro que les protege de los depredadores y les permite esconderse en lugares seguros.
  • El lagarto Gila, que vive en América del Norte, es capaz de sobrevivir sin agua durante meses, almacenando el agua que necesita en su cuerpo.
  • Los camaleones pueden mover sus ojos en diferentes direcciones independientemente el uno del otro, lo que les permite tener una visión periférica muy amplia.
  • La serpiente más grande del mundo es la anaconda verde, que puede medir hasta 10 metros de largo y pesar más de 250 kg.
  • Las serpientes pueden tragar presas enteras que son mucho más grandes que su cabeza gracias a la estructura especial de su mandíbula y cráneo.
  • El gecko de la isla de Madagascar tiene dedos muy pegajosos que le permiten caminar por techos y paredes verticales.
  • Algunas especies de serpientes venenosas tienen un veneno tan potente que puede matar a un ser humano en cuestión de minutos.
  • Las tortugas marinas son capaces de navegar miles de kilómetros a través del océano para llegar a sus lugares de alimentación y reproducción.
  • Los lagartos cambian de color según su estado de ánimo y temperatura corporal, oscureciéndose cuando tienen miedo o están fríos y aclarándose cuando están contentos o calientes.
  • La iguana marina es capaz de pasar largos periodos de tiempo debajo del agua gracias a una estructura especial en su cabeza que le permite respirar aire atrapado en su boca.
  • El cocodrilo de agua salada es el reptil más grande del mundo, llegando a medir más de 6 metros de largo y pesar más de 1000 kg.
  • Las serpientes de cascabel pueden detectar la temperatura de sus presas gracias a un órgano especializado en su nariz llamado foseta loreal.
  • Los cocodrilos son capaces de aguantar la respiración durante más de una hora mientras cazan bajo el agua.
  • Las serpientes venenosas tienen una cabeza en forma de triángulo que les permite abrir la boca y morder a sus presas de forma más efectiva.
  • Los lagartos de la familia Agamidae tienen una cresta en la cabeza que se asemeja a una corona, lo que les ha dado el apodo de «lagartos coronados».
  • La mamba negra es la serpiente más rápida del mundo, capaz de moverse a velocidades de hasta 20 km/h.
  • Los cocodrilos son capaces de regular su temperatura corporal de forma similar a los mamíferos, lo que les permite sobrevivir en ambientes muy fríos o muy calurosos.
  • Las serpientes de mar son capaces de respirar a través de su piel, lo que les permite permanecer bajo el agua durante largos periodos de tiempo.

Juega y aprende

Datos curiosos sobre mamíferos

Datos curiosos

  • Las musarañas son los mamíferos más pequeños del mundo y pueden comer hasta tres veces su peso corporal cada día.
  • Los murciélagos frugívoros (que comen frutas) son importantes para la dispersión de semillas en los bosques tropicales.
  • Las cabras montesas son capaces de escalar pendientes verticales y rocas empinadas utilizando sus pezuñas.
  • Los mapaches pueden manipular objetos con sus manos y dedos como si tuvieran pulgares oponibles.
  • Las nutrias de mar son los únicos mamíferos que utilizan herramientas, como piedras para romper conchas de mariscos.
  • Los puercoespines pueden disparar sus púas a los depredadores como medida defensiva.
  • Los murciélagos nariz de hoja utilizan su nariz para emitir y recibir ondas sonoras que les permiten «ver» en la oscuridad.
  • Los lobos pueden comunicarse entre sí mediante aullidos que se pueden escuchar hasta a 16 kilómetros de distancia.
  • Las zarigüeyas son resistentes a las picaduras de serpientes venenosas debido a una proteína en su sangre que neutraliza las toxinas.
  • Las focas son capaces de dormir en el agua mientras flotan y utilizan a la vez un hemisferio cerebral para controlar su respiración y mantenerse alertas a posibles depredadores.
  • Los elefantes tienen una memoria excelente y pueden recordar a otros elefantes e incluso lugares por décadas.
  • Los pangolines son los únicos mamíferos que tienen escamas, que utilizan para protegerse de los depredadores.
  • Los zorrillos pueden lanzar un líquido maloliente y aceitoso como medida de defensa, que puede alcanzar hasta tres metros de distancia.
  • Los erizos pueden enrollarse en una bola y clavar sus espinas como medida defensiva.
  • Los lobos marinos pueden bucear a profundidades de hasta 600 metros y permanecer bajo el agua más de 20 minutos.
  • Las jinetas son capaces de caminar sobre las ramas de los árboles de forma invertida, gracias a sus patas y garras curvas.
  • Los gorilas son los primates más grandes del mundo y los machos adultos pueden pesar más de 200 kilos.
  • Las hienas tienen dientes tan fuertes que pueden morder y comer los huesos de otros animales.
  • Los murciélagos vampiros pueden detectar la respiración de personas durmiendo y utilizan esa información para morderlos y chupar su sangre.
  • Los osos hormigueros tienen lenguas muy largas y pegajosas que utilizan para capturar hormigas y termitas.
  • Los monos capuchinos utilizan piedras para romper nueces y mariscos, lo que sugiere que tienen cierta capacidad de fabricación de herramientas.
  • Los perezosos tienen un metabolismo muy lento y pueden tardar hasta un mes en digerir una sola hoja.
  • Las morsas tienen colmillos que pueden crecer hasta un metro de longitud y los utilizan para romper el hielo y defenderse de los depredadores.
  • Las nutrias de río tienen un pelaje muy denso y utilizan herramientas, como piedras, para abrir conchas y cangrejos.
  • Los rinocerontes tienen una piel muy gruesa que puede alcanzar los 5 centímetros de espesor, que los protege de los depredadores y del sol.
  • Las ballenas jorobadas se comunican entre sí mediante canciones complejas y distintivas.
  • Los armiños cambian de color de pelo en invierno para camuflarse en la nieve y en verano para mezclarse con el entorno.
  • Los ciervos pierden sus cuernos cada año y les vuelven a crecer en la temporada de apareamiento.
  • Las hienas tienen un sistema digestivo muy resistente que les permite digerir huesos, cartílagos e incluso cuernos.
  • Los perros pueden detectar olores en concentraciones tan bajas como una parte por billón, lo que les permite detectar drogas y explosivos.
  • Las jirafas tienen cuellos muy largos, pero tienen el mismo número de vértebras en el cuello que los seres humanos: siete.
  • Las nutrias marinas tienen una bolsa especial en su piel para guardar piedras, que utilizan como herramientas para romper conchas y cangrejos.
  • Las zarigüeyas tienen un sistema inmunológico muy fuerte y son resistentes a muchas enfermedades, incluyendo la rabia.
  • Los hipopótamos pueden correr a velocidades de hasta 30 kilómetros por hora, a pesar de su gran tamaño y peso.
  • Las belugas son ballenas blancas que tienen un canto muy variado y complejo, que incluye sonidos como silbidos, chillidos y chirridos.
  • Los koalas tienen huellas dactilares únicas, al igual que los seres humanos, que los hacen fácilmente identificables.
  • Los lémures son primates endémicos de Madagascar y son conocidos por su distintivo canto de alarma, que utilizan para alertar a otros miembros del grupo sobre la presencia de depredadores.
  • Los castores tienen dientes muy afilados y fuertes que les permiten incluso cortar árboles y construir presas y diques.
  • Los leones tienen una melena distintiva que solo tienen los machos y que les da una apariencia más imponente y atractiva para las hembras.
  • Los murciélagos frugívoros, que se alimentan de frutas, son importantes polinizadores y dispersores de semillas en muchos ecosistemas.

Juega y aprende

El clásico juego de las Damas online

El juego de las damas, también conocido como checkers en inglés, es un juego de mesa clásico para dos jugadores. El objetivo del juego es capturar todas las piezas del oponente o bloquearlas para que no puedan moverse. Las damas es un juego de estrategia sencillo pero desafiante que ha sido popular en todo el mundo durante siglos.

Las reglas

El tablero de las damas es un cuadrado de 64 casillas, alternando casillas de colores claros y oscuros. Cada jugador tiene 12 piezas, generalmente de color negro o rojo, que se colocan en las casillas oscuras de la fila más cercana a cada jugador. Las piezas se mueven diagonalmente hacia adelante, una casilla a la vez, y pueden capturar las piezas del oponente saltando por encima de ellas a una casilla vacía adyacente.

Las piezas de las damas se pueden promover a damas si llegan al extremo opuesto del tablero. Las damas pueden moverse en cualquier dirección, diagonalmente, y pueden saltar sobre las piezas del oponente para capturarlas.

El juego de las damas tiene una gran cantidad de variantes y reglas, lo que lo hace muy interesante. Los jugadores deben pensar cuidadosamente cada movimiento para anticipar las jugadas del oponente y evitar perder piezas valiosas. A menudo, los jugadores deben sacrificar piezas en el corto plazo para obtener una ventaja estratégica a largo plazo.

Juega online

En la actualidad, es posible jugar a las damas en línea desde cualquier navegador web, tanto contra otro jugador humano como contra una inteligencia artificial. Hay varios sitios web y aplicaciones que ofrecen el juego de las damas en línea, algunos de los cuales cuentan con funciones avanzadas, como partidas cronometradas, torneos y rankings de jugadores.

Las inteligencias artificiales que juegan al juego de las damas utilizan algoritmos de búsqueda y análisis para determinar la mejor jugada posible en cada situación. Las IA pueden ser muy desafiantes para los jugadores humanos, especialmente en niveles de dificultad avanzados.

A continuación te proporcionamos dos enlaces en los que encontrarás una versión con un toque más original:

En resumen, el juego de las damas es un juego de mesa clásico para dos jugadores que implica capturar o bloquear las piezas del oponente. El juego se puede jugar en línea en cualquier navegador web, contra otro jugador humano o una inteligencia artificial. Las damas es un juego sencillo pero desafiante que ha sido muy popular en todo el mundo durante siglos.

Puedes encontrar más información en github.

Hex, divertido juego de estrategia online

Historia y objetivo

Hex es un juego de estrategia para dos jugadores, inventado por el matemático danés Piet Hein en 1942 y popularizado por el físico estadounidense John Nash en los años 50. El objetivo del juego es conectar dos lados opuestos de un tablero hexagonal con piezas del mismo color, formando una cadena ininterrumpida de hexágonos. El jugador que logra conectar sus dos lados opuestos gana la partida.

Reglas

El tablero de Hex consta de una serie de hexágonos, generalmente de tamaño 11×11, aunque también se pueden encontrar tableros más grandes o más pequeños. Los jugadores colocan sus piezas, generalmente de dos colores diferentes, en los hexágonos del tablero por turnos. El jugador que juega con las piezas negras generalmente tiene la ventaja de jugar primero.

El objetivo de cada jugador es conectar los lados opuestos del tablero con una cadena de hexágonos del mismo color. Para lograr esto, los jugadores deben crear una cadena de piezas que se conecte en línea recta de un lado a otro del tablero. Las cadenas no pueden bifurcarse, cruzarse o terminar en una posición que ya esté ocupada por una pieza.

Cada partida será un desafío

El juego Hex es interesante porque a pesar de su simplicidad, presenta una gran complejidad estratégica. Cada movimiento puede tener implicaciones significativas en el resultado final de la partida, y los jugadores deben considerar cuidadosamente cada uno de sus movimientos para asegurarse de que no estén creando inadvertidamente una oportunidad para su oponente. El juego también puede ser muy difícil de analizar, ya que los jugadores pueden crear patrones complejos que no son evidentes a simple vista.

Juega online

Hex es un juego al que se puede jugar en línea, tanto contra otro jugador humano como contra una inteligencia artificial. A continuación te mostramos un par de enlaces que te permitirán jugar partidas de Hex en línea y desafiar a otros jugadores de todo el mundo. También dispondrás de varias opciones para jugar contra una inteligencia artificial, algunas de las cuales utilizan algoritmos de búsqueda y análisis para proporcionar una experiencia de juego desafiante y satisfactoria:

En resumen, Hex es un juego de estrategia abstracto para dos jugadores que consiste en conectar dos lados opuestos del tablero con una cadena ininterrumpida de hexágonos del mismo color. Es un juego altamente estratégico y complejo, que se puede jugar en línea contra otros jugadores humanos o una inteligencia artificial.

Puedes encontrar más información en github.

Vocabulario español-inglés con ilustraciones en color: La tabla periódica de los elementos

Vocabulario ilustrado con la tabla periódica de los elementos, bilingüe en español y en inglés.

Vocabulario español-inglés: La tabla periódica de los elementos

Vocabulario español-inglés (la tabla periódica de los elementos)

  • (00:00) ACTINIO – ACTINIUM
  • (00:11) ALUMINIO – ALUMINIUM
  • (00:21) AMERICIO – AMERICIUM
  • (00:31) ANTIMONIO – ANTIMONY
  • (00:41) ARGÓN – ARGON
  • (00:51) ARSÉNICO – ARSENIC
  • (01:01) ASTATO – ASTATINE
  • (01:11) AZUFRE – SULFUR
  • (01:21) BARIO – BARIUM
  • (01:31) BERILIO – BERYLLIUM
  • (01:41) BERKELIO – BERKELIUM
  • (01:51) BISMUTO – BISMUTH
  • (02:01) BOHRIO – BOHRIUM
  • (02:11) BORO – BORON
  • (02:21) BROMO – BROMINE
  • (02:31) CADMIO – CADMIUM
  • (02:41) CALCIO – CALCIUM
  • (02:51) CALIFORNIO – CALIFORNIUM
  • (03:01) CARBONO – CARBON
  • (03:11) CERIO – CERIUM
  • (03:21) CESIO – CAESIUM
  • (03:31) CIRCONIO – ZIRCONIUM
  • (03:41) CLORO – CHLORINE
  • (03:51) COBALTO – COBALT
  • (04:01) COBRE – COPPER
  • (04:11) COPERNICIO – COPERNICIUM
  • (04:21) CRIPTÓN – KRYPTON
  • (04:31) CROMO – CHROMIUM
  • (04:41) CURIO – CURIUM
  • (04:51) DARMSTATIO – DARMSTADTIUM
  • (05:01) DISPROSIO – DYSPROSIUM
  • (05:11) DUBNIO – DUBNIUM
  • (05:21) EINSTENIO – EINSTEINIUM
  • (05:31) ERBIO – ERBIUM
  • (05:41) ESCANDIO – SCANDIUM
  • (05:51) ESTAÑO – TIN
  • (06:01) ESTRONCIO – STRONTIUM
  • (06:11) EUROPIO – EUROPIUM
  • (06:21) FERMIO – FERMIUM
  • (06:31) FLEROVIO – FLEROVIUM
  • (06:41) FLÚOR – FLUORINE
  • (06:51) FÓSFORO – PHOSPHORUS
  • (07:01) FRANCIO – FRANCIUM
  • (07:11) GADOLINIO – GADOLINIUM
  • (07:21) GALIO – GALLIUM
  • (07:31) GERMANIO – GERMANIUM
  • (07:41) HAFNIO – HAFNIUM
  • (07:51) HASSIO – HASSIUM
  • (08:01) HELIO – HELIUM
  • (08:11) HIDRÓGENO – HYDROGEN
  • (08:21) HIERRO – IRON
  • (08:31) HOLMIO – HOLMIUM
  • (08:41) INDIO – INDIUM
  • (08:51) IRIDIO – IRIDIUM
  • (09:01) ITERBIO – YTTERBIUM
  • (09:11) ITRIO – YTTRIUM
  • (09:21) LANTANO – LANTHANUM
  • (09:31) LAURENCIO – LAWRENCIUM
  • (09:41) LITIO – LITHIUM
  • (09:51) LIVERMORIO – LIVERMORIUM
  • (10:01) LUTECIO – LUTETIUM
  • (10:11) MAGNESIO – MAGNESIUM
  • (10:21) MANGANESO – MANGANESE
  • (10:31) MEITNERIO – MEITNERIUM
  • (10:41) MENDELEVIO – MENDELEVIUM
  • (10:51) MERCURIO – MERCURY
  • (11:01) MOLIBDENO – MOLYBDENUM
  • (11:11) MOSCOVIO – MOSCOVIUM
  • (11:21) NEODIMIO – NEODYMIUM
  • (11:31) NEÓN – NEON
  • (11:41) NEPTUNIO – NEPTUNIUM
  • (11:51) NIHONIO – NIHONIUM
  • (12:01) NIOBIO – NIOBIUM
  • (12:11) NÍQUEL – NICKEL
  • (12:21) NITRÓGENO – NITROGEN
  • (12:31) NOBELIO – NOBELIUM
  • (12:41) OGANESÓN – OGANESSON
  • (12:51) ORO – GOLD
  • (13:01) OSMIO – OSMIUM
  • (13:11) OXÍGENO – OXYGEN
  • (13:21) PALADIO – PALLADIUM
  • (13:31) PLATA – SILVER
  • (13:41) PLATINO – PLATINUM
  • (13:51) PLOMO – LEAD
  • (14:01) PLUTONIO – PLUTONIUM
  • (14:11) POLONIO – POLONIUM
  • (14:21) POTASIO – POTASSIUM
  • (14:31) PRASEODIMIO – PRASEODYMIUM
  • (14:41) PROMETIO – PROMETHIUM
  • (14:51) PROTACTINIO – PROTACTINIUM
  • (15:01) RADIO – RADIUM
  • (15:11) RADÓN – RADON
  • (15:21) RENIO – RHENIUM
  • (15:31) RODIO – RHODIUM
  • (15:41) ROENTGENIO – ROENTGENIUM
  • (15:51) RUBIDIO – RUBIDIUM
  • (16:01) RUTENIO – RUTHENIUM
  • (16:11) RUTHERFORDIO – RUTHERFORDIUM
  • (16:21) SAMARIO – SAMARIUM
  • (16:31) SEABORGIO – SEABORGIUM
  • (16:41) SELENIO – SELENIUM
  • (16:51) SILICIO – SILICON
  • (17:01) SODIO – SODIUM
  • (17:11) TALIO – THALLIUM
  • (17:21) TANTALIO – TANTALUM
  • (17:31) TECNECIO – TECHNETIUM
  • (17:41) TELURIO – TELLURIUM
  • (17:51) TENESO – TENNESSINE
  • (18:01) TERBIO – TERBIUM
  • (18:11) TITANIO – TITANIUM
  • (18:21) TORIO – THORIUM
  • (18:31) TULIO – THULIUM
  • (18:41) TUNGSTENO – TUNGSTEN
  • (18:51) URANIO – URANIUM
  • (19:01) VANADIO – VANADIUM
  • (19:11) XENÓN – XENON
  • (19:21) YODO – IODINE
  • (19:31) ZINC – ZINC