7.2 Dni bez opadów

Matura maj 2026 - Matura z informatyki: arkusze krok po kroku (Python)

Zadanie 7.2 (2 pkt): dla każdego miesiąca długość najdłuższego ciągu kolejnych dni bez opadów. Licznik `run` rośnie w dzień bez deszczu i zeruje się w deszczowy. Dwa błędy z zasad oceniania (1 pkt zamiast 2): ciąg przechodzący na następny miesiąc (licznik nie wyzerowany na początku miesiąca) i licznik startujący od 1 zamiast od 0.

from datetime import date

days = []
with open("staw_przyklad.txt", encoding="utf-8") as f:
    next(f)  # pierwszy wiersz to nagłówek
    for line in f:
        day, temp, rain = line.rstrip("\n").split("\t")
        # temperatura z przecinkiem dziesiętnym: zamiana na kropkę przed float
        days.append((date.fromisoformat(day), float(temp.replace(",", ".")), int(rain)))

# 7.1 średnia temperatura miesiąca: suma i liczba dni w słownikach, numer miesiąca jako klucz
sums, counts = {}, {}
for day, temp, rain in days:
    sums[day.month] = sums.get(day.month, 0) + temp
    counts[day.month] = counts.get(day.month, 0) + 1
averages = {month: round(sums[month] / counts[month], 1) for month in sorted(sums)}

# 7.2 najdłuższy ciąg dni bez opadów: licznik rośnie w dzień bez deszczu, zeruje się
# w deszczowy dzień i na początku każdego miesiąca
longest = {}
run = 0
current = 0
for day, temp, rain in days:
    if day.month != current:
        current = day.month
        run = 0  # ciąg z poprzedniego miesiąca się nie liczy
    if rain == 0:
        run = run + 1
    else:
        run = 0
    longest[current] = max(longest.get(current, 0), run)

print("7.1", *averages.values())
print("7.2", *longest.values())

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Matura z informatyki: arkusze krok po kroku·Zaloguj się, aby zapisać postęp na koncie.