Código Python: Control de Radar de Tramo y Análisis de Consumo de Agua en Python
Ejercicio 1: Radar de tramo
1. class Vehiculo:
def __init__(self, matricula, hora_entrada, hora_salida):
self.matricula = matricula
self.hora_entrada = hora_entrada
self.hora_salida = hora_salida
def tiempo_tramo(self):
return self.hora_salida - self.hora_entrada
def velocidad_media(self, distancia_km):
tiempo_horas = self.tiempo_tramo() / 3600
return distancia_km / tiempo_horas
class RadarTramo:
def __init__(self, distancia_km, velocidad_maxima):
self.distancia_km = distancia_km
self.velocidad_maxima = velocidad_maxima
self.vehiculos = []
def registrar_vehiculo(self, vehiculo):
self.vehiculos.append(vehiculo)
def vehiculos_infractores(self):
infractores = []
for vehiculo in self.vehiculos:
velocidad = vehiculo.velocidad_media(self.distancia_km)
if velocidad > self.velocidad_maxima:
infractores.append(vehiculo.matricula)
return set(infractores)
radar = RadarTramo(distancia_km=5.0, velocidad_maxima=100.0)
v1 = Vehiculo("A1B2C3", 0, 180)
v2 = Vehiculo("D4E5", 0, 150)
v3 = Vehiculo("F6G7", 0, 240)
radar.registrar_vehiculo(v1)
radar.registrar_vehiculo(v2)
radar.registrar_vehiculo(v3)
infractores = radar.vehiculos_infractores()
print("Vehículos infractores:")
for matricula in infractores:
print(matricula)
Ejercicio 2: Lectura y análisis de consumos
2. def leer_consumos(nombre_fichero):
consumos = []
with open(nombre_fichero, "r") as fichero:
for linea in fichero:
consumos.append(int(linea.strip()))
return consumos
def consumo_medio(lista_consumos):
total = sum(lista_consumos)
return total / len(lista_consumos)
def contar_dias_altos(lista_consumos, umbral):
contador = 0
for consumo in lista_consumos:
if consumo > umbral:
contador += 1
return contador
def generar_informe(nombre_fichero, umbral):
consumos = leer_consumos(nombre_fichero)
media = consumo_medio(consumos)
dias_altos = contar_dias_altos(consumos, umbral)
with open("informe.txt", "w") as fichero:
fichero.write(f"Consumo medio diario: {media:.2f} litros\n")
fichero.write(f"Días con consumo superior a {umbral} litros: {dias_altos}")
generar_informe("consumos.txt", 130)