"""Snittfart per kilometer. Konstruert eksempel til gribben.no/tech/losninger/test-forst-med-ai.html Denne versjonen er skrevet til testene i test_tempo.py passerte, uten at testene ble rørt. Første utkast ligger i utkast_tempo.py, slik at du kan se hvilke to regler det brøt. """ def tempo(km: float, tid: str) -> str: if km <= 0: # En distanse på null er en feil i dataene, ikke en uendelig fart. # Derfor ValueError og ikke ZeroDivisionError som lekker ut av regnestykket. raise ValueError("Distansen må være større enn null") deler = [int(d) for d in tid.split(":")] if len(deler) == 2: timer, minutter, sekunder = 0, *deler elif len(deler) == 3: timer, minutter, sekunder = deler else: raise ValueError(f"Tida må være mm:ss eller t:mm:ss, ikke {tid!r}") # Rund hele sekundtallet før det deles i minutter og sekunder. Gjør du det # etterpå, kan sekundene bli 60 og minuttet bli stående. per_km = round((timer * 3600 + minutter * 60 + sekunder) / km) return f"{per_km // 60}:{per_km % 60:02d}"