Validar una dirección IP

import socket

def es_direccion_ip_valida(ip):
    try:
        # Intenta convertir la dirección IP en una representación binaria de 32 bits.
        socket.inet_aton(ip)
        # Si la conversión es exitosa, la dirección IP es válida y se devuelve True.
        return True
    except socket.error:
        # Si ocurre algún error durante la conversión, se captura la excepción y se devuelve False.
        return False
        
# Solicita al usuario que ingrese una dirección IP.
direccion_ip = input("Ingrese una dirección IP: ")

# Verifica si la dirección IP es válida utilizando la función es_direccion_ip_valida(ip).
if es_direccion_ip_valida(direccion_ip):
    print("Dirección IP válida")
else:
    print("Dirección IP inválida")
Ingrese una dirección IP:  3464536


Dirección IP válida

Imprimir el calendario de un mes y año dado

import calendar

# Solicitar al usuario que ingrese el año y el mes.
año = int(input("Ingrese el año: "))
mes = int(input("Ingrese el mes: "))

# Utilizar la función month() de la biblioteca calendar para imprimir el calendario del mes y año especificados.
print(calendar.month(año, mes))
Ingrese el año:  2024
Ingrese el mes:  5


      May 2024
Mo Tu We Th Fr Sa Su
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

Verificar si una cadena es una dirección de correo electrónico válida

import re

def es_direccion_email_valida(email):
    return bool(re.match(r"[^@]+@[^@]+\.[^@]+", email))

email_ingresado = input("Ingrese una dirección de correo electrónico: ")
if es_direccion_email_valida(email_ingresado):
    print("Dirección de correo electrónico válida")
else:
    print("Dirección de correo electrónico inválida")
Ingrese una dirección de correo electrónico:  asburon@gmail.com


Dirección de correo electrónico válida

Generar una contraseña aleatoria con requisitos específicos

import random
import string

def generar_contraseña(longitud, incluir_digitos=True, incluir_caracteres_especiales=True):
    caracteres = string.ascii_letters
    if incluir_digitos:
        caracteres += string.digits
    if incluir_caracteres_especiales:
        caracteres += string.punctuation
    contraseña = ''.join(random.choice(caracteres) for _ in range(longitud))
    return contraseña

longitud_contraseña = 12
print("Contraseña generada:", generar_contraseña(longitud_contraseña))
Contraseña generada: uwqEiQ!Q!NCd

Verificar si una cadena es una URL válida

import re

def es_url_valida(url):
    regex = re.compile(
        r'^(?:http|ftp)s?://'  # Protocolo
        r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|'  # Dominio
        r'localhost|'  # Localhost
        r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|'  # Dirección IP (IPv4)
        r'\[?[A-F0-9]*:[A-F0-9:]+\]?)'  # Dirección IP (IPv6)
        r'(?::\d+)?'  # Puerto
        r'(?:/?|[/?]\S+)$', re.IGNORECASE)  # Rutas y parámetros opcionales
    return re.match(regex, url) is not None

input_url = input("Ingrese una URL: ")
if es_url_valida(input_url):
    print("URL válida")
else:
    print("URL inválida")
Ingrese una URL:  http://www.google.es


URL válida

Calcula el pago mensual de una hipoteca

def calcular_hipoteca(monto_prestamo, tasa_interes, años):
    # Convertir tasa de interés anual a tasa de interés mensual
    tasa_interes_mensual = (tasa_interes / 100) / 12

    # Convertir años a meses
    meses = años * 12

    # Calcular el pago mensual utilizando la fórmula de la hipoteca
    pago_mensual = (monto_prestamo * tasa_interes_mensual) / (1 - (1 + tasa_interes_mensual)**(-meses))

    return pago_mensual


def main():
    # Solicitar información al usuario
    monto_prestamo = float(input("Ingrese el monto del préstamo: "))
    tasa_interes = float(input("Ingrese la tasa de interés anual (%): "))
    años = int(input("Ingrese el número de años: "))

    # Calcular el pago mensual
    pago_mensual = calcular_hipoteca(monto_prestamo, tasa_interes, años)

    # Mostrar el pago mensual
    print(f"El pago mensual de la hipoteca es: {pago_mensual:.2f}")


if __name__ == "__main__":
    main()
Ingrese el monto del préstamo:  200000
Ingrese la tasa de interés anual (%):  5
Ingrese el número de años:  25


El pago mensual de la hipoteca es: 1169.18

Calcula el cambio a devolver después de una compra

def calcular_cambio(precio, cantidad_recibida):
    # Calcular el cambio
    cambio = cantidad_recibida - precio
    return cambio


def main():
    # Solicitar información al usuario
    precio = float(input("Ingrese el precio del artículo: "))
    cantidad_recibida = float(input("Ingrese la cantidad recibida: "))

    # Calcular el cambio
    cambio = calcular_cambio(precio, cantidad_recibida)

    # Mostrar el cambio
    print(f"El cambio a devolver es: {cambio:.2f}")


if __name__ == "__main__":
    main()
Ingrese el precio del artículo:  636
Ingrese la cantidad recibida:  433


El cambio a devolver es: -203.00

Calcula distancia entre dos ciudades

# Importar la clase Nominatim de la biblioteca geopy.geocoders
from geopy.geocoders import Nominatim
from geopy.distance import geodesic

def calcular_distancia(ciudad1, ciudad2):
    # Crear un objeto Nominatim para geolocalizar ciudades
    geolocalizador = Nominatim(user_agent="my_geocoder")

    # Obtener las coordenadas geográficas de las ciudades
    coordenadas_ciudad1 = geolocalizador.geocode(ciudad1)
    coordenadas_ciudad2 = geolocalizador.geocode(ciudad2)

    # Calcular la distancia entre las ciudades
    distancia = geodesic((coordenadas_ciudad1.latitude, coordenadas_ciudad1.longitude),
                         (coordenadas_ciudad2.latitude, coordenadas_ciudad2.longitude)).kilometers

    return distancia

def main():
    ciudad1 = "New York, USA"
    ciudad2 = "Los Angeles, USA"

    # Calcular la distancia entre las ciudades
    distancia = calcular_distancia(ciudad1, ciudad2)

    # Mostrar la distancia entre las ciudades
    print(f"La distancia entre {ciudad1} y {ciudad2} es de {distancia:.2f} kilómetros.")

if __name__ == "__main__":
    main()
La distancia entre New York, USA y Los Angeles, USA es de 3944.28 kilómetros.

Valida un número de tarjeta de crédito utilizando el algoritmo de Luhn

#Para validar números de tarjetas de crédito, puedes utilizar el algoritmo de Luhn
#Es conocido como el algoritmo de suma de verificación de módulo 10. 
#Este algoritmo verifica la validez de un número de tarjeta de crédito mediante una fórmula matemática.
def validar_tarjeta_credito(numero_tarjeta):

    # Eliminar espacios en blanco y caracteres no numéricos
    numero_tarjeta = ''.join(numero_tarjeta.split())

    if not numero_tarjeta.isdigit():
        return False  # El número de tarjeta debe contener solo dígitos

    # Convertir el número de tarjeta en una lista de dígitos
    digitos = [int(d) for d in numero_tarjeta]

    # Duplicar cada segundo dígito, comenzando desde la derecha
    digitos_duplicados = [(2 * d if i % 2 == len(digitos) % 2 else d) for i, d in enumerate(digitos)]

    # Sumar los dígitos individuales de los números duplicados y no duplicados
    suma_digitos = sum((d // 10 + d % 10) for d in digitos_duplicados)

    # La tarjeta es válida si la suma de los dígitos es divisible por 10
    return suma_digitos % 10 == 0

def main():
    numero_tarjeta = input("Ingrese el número de tarjeta de crédito: ")
    if validar_tarjeta_credito(numero_tarjeta):
        print("El número de tarjeta de crédito es válido.")
    else:
        print("El número de tarjeta de crédito no es válido.")

if __name__ == "__main__":
    main()
Ingrese el número de tarjeta de crédito:  4567234567


El número de tarjeta de crédito no es válido.

Gestión de inventario

def __init__(self, id_producto, nombre, precio, cantidad):
        self.id_producto = id_producto
        self.nombre = nombre
        self.precio = precio
        self.cantidad = cantidad

    def calcular_valor_inventario(self):
        return self.precio * self.cantidad

class Inventario:
    def __init__(self):
        self.productos = []

    def agregar_producto(self, producto):
        self.productos.append(producto)

    def calcular_valor_total_inventario(self):
        valor_total = 0
        for producto in self.productos:
            valor_total += producto.calcular_valor_inventario()
        return valor_total

def main():
    inventario = Inventario()

    # Agregar algunos productos al inventario
    inventario.agregar_producto(Producto(1, "Camiseta", 20.99, 50))
    inventario.agregar_producto(Producto(2, "Pantalón", 39.99, 30))
    inventario.agregar_producto(Producto(3, "Zapatos", 59.99, 20))

    # Calcular el valor total del inventario
    valor_total = inventario.calcular_valor_total_inventario()
    print(f"El valor total del inventario es: ${valor_total:.2f}")

if __name__ == "__main__":
    main()
El valor total del inventario es: $3449.00

Calcula el Índice de Masa Muscular

# Definir la función para calcular el Índice de Masa Corporal (IMC)
def indice_masa_corporal(altura, peso):
    # Redondear el resultado a dos decimales
    return round((peso / altura ** 2), 2)

# Solicitar al usuario que ingrese su altura en metros
altura = float(input("Ingrese su altura en metros: "))

# Solicitar al usuario que ingrese su peso en kilogramos
peso = float(input("Ingrese su peso en kg: "))

# Imprimir mensaje de bienvenida al calculador de IMC
print("Bienvenido al calculador de IMC.")

# Calcular el IMC utilizando la función definida
imc = indice_masa_corporal(altura, peso)

# Imprimir el IMC del usuario
print("Su IMC es: ", imc)

# Determinar la categoría de peso basada en el IMC
if imc <= 18.5:
    print("Usted está bajo de peso.")
elif 18.5 < imc <= 24.9:
    print("Su peso es normal.")
elif 25 < imc <= 29.9:
    print("Usted está sobrepeso.")
else:
    print("Usted está obeso.")
Ingrese su altura en metros:  1.69
Ingrese su peso en kg:  70


Bienvenido al calculador de IMC.
Su IMC es:  24.51
Su peso es normal.

Convierte millas a kilómetros

# Solicitar al usuario que ingrese una distancia en millas
millas = float(input("Ingrese la distancia en millas: "))

# Factor de conversión: 1 milla = 1.60934 kilómetros
factor_de_conversion = 1.60934

# Calcular los kilómetros multiplicando las millas por el factor de conversión
kilometros = millas * factor_de_conversion

# Imprimir el resultado de la conversión
print(f"{millas} millas es igual a {kilometros} kilómetros")
Ingrese la distancia en millas:  5345


5345.0 millas es igual a 8601.9223 kilómetros

Convierte kilómetros a millas

# Solicitar al usuario que ingrese una distancia en kilómetros
kilometros = float(input("Ingrese la distancia en kilómetros: "))

# Factor de conversión: 1 kilómetro = 0.621371 millas
factor_de_conversion = 0.621371

# Calcular las millas multiplicando los kilómetros por el factor de conversión
millas = kilometros * factor_de_conversion

# Imprimir el resultado de la conversión
print(f"{kilometros} kilómetros es igual a {millas} millas")
Ingrese la distancia en kilómetros:  5435


5435.0 kilómetros es igual a 3377.151385 millas