class Vehiculos: def __init__(self, tipo, marca, color, año): self.tipo = tipo self.marca = marca self.color = color self.año = año def mostrar_datos(self): print(f"Tipo de Vehículo: {self.tipo}") print(f"Marca: {self.marca}") print(f"Color: {self.color}") print(f"Año: {self.año}\n") # Listas lista_de_vehiculos = [] carros = [] camionetas = [] motocicletas = [] bicicletas = [] lanchas = [] aviones = [] def agregar_vehiculo(tipo): tipo_nombre = { "1": ("Carro", carros), "2": ("Camioneta", camionetas), "3": ("Motocicleta", motocicletas), "4": ("Bicicleta", bicicletas), "5": ("Lancha", lanchas), "6": ("Avion", aviones) }[tipo] print(f"\nAgregar {tipo_nombre[0]}") marca = input("Ingrese Marca: ") color = input("Ingrese Color: ") año = int(input("Ingrese Año: ")) # Condicionales if tipo == "1": vehiculo = Carro(tipo_nombre[0], marca, color, año) elif tipo == "2": vehiculo = Camioneta(tipo_nombre[0], marca, color, año) elif tipo == "3": vehiculo = Motocicleta(tipo_nombre[0], marca, color, año) elif tipo == "4": vehiculo = Bicicleta(tipo_nombre[0], marca, color, año) elif tipo == "5": vehiculo = Lancha(tipo_nombre[0], marca, color, año) elif tipo == "6": vehiculo = Avion(tipo_nombre[0], marca, color, año) tipo_nombre[1].append(vehiculo) # Lista específica lista_de_vehiculos.append(vehiculo) # Lista general print(f"{tipo_nombre[0]} agregado exitosamente!") class Carro(Vehiculos): def encender(self): print(f"El Carro {self.marca} está encendido.") def acelerar(self, velocidad): if velocidad > 180: print("¡Advertencia! No puede superar los 180 km/h.") else: print(f"El Carro {self.marca} acelera a {velocidad} km/h.") def frenar(self): print(f"El Carro {self.marca} ha frenado.") def apagar(self): print(f"El Carro {self.marca} está apagado.") class Camioneta(Vehiculos): def encender(self): print(f"La Camioneta {self.marca} está encendido.") def cargar(self, peso): if peso > 500: print("La Camioneta no soporta ese peso y no puede arrancar.") else: print(f"Cargando {peso} kg en la camioneta {self.marca}.") def acelerar(self, peso): if peso > 500: print("No se puede arrancar la camioneta.") elif peso > 0: print(f"La Camioneta {self.marca} acelera a 120 km/h con carga.") else: print(f"La Camioneta {self.marca} acelera a 180 km/h sin carga.") def frenar(self): print(f"La Camioneta {self.marca} ha frenado.") def apagar(self): print(f"La Camioneta {self.marca} está apagado.") class Motocicleta(Vehiculos): def encender(self): print(f"La Motocicleta {self.marca} está encendido.") def acelerar(self, velocidad): if velocidad > 140: print("¡Advertencia! No puede superar los 140 km/h.") if velocidad > 120: print("¡Peligroso! Puede dañar el motor.") else: print(f"La Motocicleta {self.marca} acelera a {velocidad} km/h.") def frenar(self): print(f"La Motocicleta {self.marca} ha frenado.") def apagar(self): print(f"La Motocicleta {self.marca} está apagado.") class Bicicleta(Vehiculos): def Montar(self): print(f"Montando la bicicleta {self.marca}.") def acelerar(self, velocidad): if velocidad > 80: print("¡Advertencia! No puede superar los 80 km/h.") else: print(f"Pedaleando a {velocidad} km/h en la bicicleta {self.marca}.") def dejar_de_pedalear(self): print(f"Dejando de pedalear la bicicleta {self.marca}.") def guardar(self): print(f"La Bicicleta {self.marca} ha sido guardada en el garaje") class Lancha(Vehiculos): def encender(self): print(f"La lancha {self.marca} está encendida y en el agua.") def acelerar(self, velocidad): print(f"La lancha {self.marca} acelera a {velocidad} km/h.") def frenar(self): print(f"La lancha {self.marca} ha frenado.") def guardar(self): print(f"La lancha {self.marca} ha sido guardada en el muelle.") class Avion(Vehiculos): def encender(self): print(f"El avión {self.marca} está encendido y en la pista.") def despegar(self): print(f"El avión {self.marca} está despegando.") def aterrizar(self): print(f"El avión {self.marca} está aterrizando.") def guardar(self): print(f"El avión {self.marca} ha sido guardado.") def realizar_accion(): if not lista_de_vehiculos: print("No hay vehículos registrados para seleccionar.") return while True: print("\n--- Seleccione un vehículo para realizar una acción ---") for idx, vehiculo in enumerate(lista_de_vehiculos, 1): print(f"{idx}. {vehiculo.marca} ({vehiculo.tipo})") try: seleccion = int(input("Seleccione el vehículo (número): ")) - 1 if seleccion < 0 or seleccion >= len(lista_de_vehiculos): print("Selección inválida.") return vehiculo_seleccionado = lista_de_vehiculos[seleccion] print("\n--- Acciones Disponibles ---") # Encender el vehículo if isinstance(vehiculo_seleccionado, (Carro, Camioneta, Motocicleta, Lancha, Avion)): vehiculo_seleccionado.encender() elif isinstance(vehiculo_seleccionado, Bicicleta): vehiculo_seleccionado.Montar() # Acelerar if isinstance(vehiculo_seleccionado, Carro) or isinstance(vehiculo_seleccionado, Motocicleta): velocidad = int(input("Ingrese velocidad para acelerar (km/h): ")) vehiculo_seleccionado.acelerar(velocidad) elif isinstance(vehiculo_seleccionado, Camioneta): peso = int(input("Ingrese peso de carga (kg): ")) vehiculo_seleccionado.cargar(peso) if peso > 0: vehiculo_seleccionado.acelerar(peso) elif isinstance(vehiculo_seleccionado, Bicicleta): velocidad = int(input("Ingrese velocidad para pedalear (km/h): ")) vehiculo_seleccionado.pedalear(velocidad) elif isinstance(vehiculo_seleccionado, Lancha): velocidad = int(input("Ingrese velocidad para acelerar (km/h): ")) vehiculo_seleccionado.acelerar(velocidad) elif isinstance(vehiculo_seleccionado, Avion): vehiculo_seleccionado.despegar() # Frenar if isinstance(vehiculo_seleccionado, Carro) or isinstance(vehiculo_seleccionado, Camioneta) or isinstance(vehiculo_seleccionado, Motocicleta): vehiculo_seleccionado.frenar() elif isinstance(vehiculo_seleccionado, Bicicleta): vehiculo_seleccionado.dejar_de_pedalear() elif isinstance(vehiculo_seleccionado, Lancha): vehiculo_seleccionado.frenar() elif isinstance(vehiculo_seleccionado, Avion): vehiculo_seleccionado.aterrizar() # Guardar if isinstance(vehiculo_seleccionado, Lancha): vehiculo_seleccionado.guardar() elif isinstance(vehiculo_seleccionado, Avion): vehiculo_seleccionado.guardar() # Apagar el vehículo if isinstance(vehiculo_seleccionado, Carro) or isinstance(vehiculo_seleccionado, Camioneta) or isinstance(vehiculo_seleccionado, Motocicleta): vehiculo_seleccionado.apagar() # Preguntar si quiere continuar continuar = input("\n¿Desea probar otro vehículo? (s/n): ") if continuar.lower() != 's': break except ValueError: print("Por favor, ingrese un número válido.") def comparar_vehiculos(): if len(lista_de_vehiculos) < 2: print("No hay suficientes vehículos para comparar.") return print("\n--- Seleccione dos vehículos para comparar ---") for idx, vehiculo in enumerate(lista_de_vehiculos, 1): print(f"{idx}. {vehiculo.marca} ({vehiculo.tipo})") try: seleccion1 = int(input("Seleccione el primer vehículo (número): ")) - 1 seleccion2 = int(input("Seleccione el segundo vehículo (número): ")) - 1 if seleccion1 < 0 or seleccion1 >= len(lista_de_vehiculos) or seleccion2 < 0 or seleccion2 >= len(lista_de_vehiculos): print("Selección inválida.") return vehiculo1 = lista_de_vehiculos[seleccion1] vehiculo2 = lista_de_vehiculos[seleccion2] print("\n--- Comparación de Vehículos ---") print(f"\nVehículo 1:") vehiculo1.mostrar_datos() print(f"Vehículo 2:") vehiculo2.mostrar_datos() if vehiculo1.tipo == vehiculo2.tipo: print("*** SON DEL MISMO TIPO ***") else: print("*** SON DE DIFERENTES TIPOS ***") except ValueError: print("Por favor, ingrese un número válido.") def seleccionar_vehiculo(): if not lista_de_vehiculos: print("No hay vehículos registrados para seleccionar.") return print("\n--- Seleccione un vehículo para probar ---") for idx, vehiculo in enumerate(lista_de_vehiculos, 1): print(f"{idx}. {vehiculo.marca} ({vehiculo.tipo})") try: seleccion = int(input("Seleccione el vehículo (número): ")) - 1 if seleccion < 0 or seleccion >= len(lista_de_vehiculos): print("Selección inválida.") return vehiculo_seleccionado = lista_de_vehiculos[seleccion] print("\n--- Detalles del Vehículo Seleccionado ---") vehiculo_seleccionado.mostrar_datos() except ValueError: print("Por favor, ingrese un número válido.") def mostrar_menu(): while True: print("\nMenú") print("1. Registrar Vehículos") print("2. Ver listado completo") print("3. Ver vehículos por tipo") print("4. Comparar Vehículos") print("5. Seleccionar Vehículo para Probar") print("6. Salir") opcion = input("Ingrese una Opción: ") if opcion == "1": tipo = input("\nSeleccione tipo:\n1. Carro\n2. Camioneta\n3. Motocicleta\n4. Bicicleta\n5. Lancha\n6. Avion\n→ ") if tipo in ["1","2","3","4","5","6"]: agregar_vehiculo(tipo) else: print("Opción inválida") elif opcion == "2": if not lista_de_vehiculos: print("No hay vehículos registrados") else: print("\n--- Listado General ---") for idx, vehiculo in enumerate(lista_de_vehiculos, 1): print(f"Vehículo {idx}:") vehiculo.mostrar_datos() elif opcion == "3": tipo = input("\nSeleccione tipo:\n1. Carro\n2. Camioneta\n3. Motocicleta\n4. Bicicleta\n5. Lancha\n6. Avion\n→ ") if tipo in ["1", "2", "3", "4", "5", "6"]: tipo_nombre = { "1": carros, "2": camionetas, "3": motocicletas, "4": bicicletas, "5": lanchas, "6": aviones }[tipo] if not tipo_nombre: print("No hay vehículos registrados de este tipo.") else: print(f"\n--- Listado de {tipo_nombre[0]}s ---") for idx, vehiculo in enumerate(tipo_nombre, 1): print(f"Vehículo {idx}:") vehiculo.mostrar_datos() else: print("Opción inválida.") elif opcion == "4": comparar_vehiculos() elif opcion == "5": realizar_accion() elif opcion == "6": print("¡Hasta luego!") break mostrar_menu()
Please keep input under 1000 characters