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.