6. Całe zadanie: plik wyniki6.txt
Matura maj 2023 - Matura z informatyki: arkusze krok po kroku (Python)
Pełne rozwiązanie zadań 6.1-6.4 jednym programem na pliku `owoce.txt`: plik wyników `wyniki6.txt` i wykres do zadania 6.1.
deliveries = []
with open("owoce.txt") as f:
f.readline() # wiersz nagłówkowy
for line in f:
day, raspberries, strawberries, currants = line.split("\t")
deliveries.append((day, int(raspberries), int(strawberries), int(currants)))
# 6.1 miesiąc z daty dd.mm.rrrr to znaki 3-4
MONTHS = {"05": "maj", "06": "czerwiec", "07": "lipiec", "08": "sierpień", "09": "wrzesień"}
summary = {}
for day, raspberries, strawberries, currants in deliveries:
month = MONTHS[day[3:5]]
if month not in summary:
summary[month] = [0, 0, 0]
summary[month][0] += raspberries
summary[month][1] += strawberries
summary[month][2] += currants
# 6.2 dni, w których porzeczek było więcej niż malin i więcej niż truskawek
currant_days = sum(1 for day, r, s, c in deliveries if c > r and c > s)
# 6.3 i 6.4 symulacja: zapas po porannej dostawie, konfitura z dwóch owoców, których jest najwięcej
JAMS = {(0, 1): "malinowo-truskawkowe", (0, 2): "malinowo-porzeczkowe", (1, 2): "truskawkowo-porzeczkowe"}
stock = [0, 0, 0] # maliny, truskawki, porzeczki w przetwórni
times = {name: 0 for name in JAMS.values()}
kilograms = {name: 0 for name in JAMS.values()}
for day, raspberries, strawberries, currants in deliveries:
stock[0] += raspberries
stock[1] += strawberries
stock[2] += currants
smallest = stock.index(min(stock)) # tego owocu dziś nie bierzemy
pair = tuple(k for k in range(3) if k != smallest)
used = min(stock[pair[0]], stock[pair[1]]) # proporcja 1:1, cały mniejszy zapas
stock[pair[0]] -= used
stock[pair[1]] -= used
times[JAMS[pair]] += 1
kilograms[JAMS[pair]] += used # 1 kg konfitury = po 1 kg obu owoców
with open("wyniki6.txt", "w", encoding="utf-8") as out:
print("6.1", file=out)
for month, kg in summary.items():
print(month, *kg, file=out)
print("6.2", currant_days, file=out)
print("6.3", file=out)
for name in sorted(times):
print(name, times[name], file=out)
print("6.4", file=out)
for name in sorted(kilograms):
print(name, kilograms[name], file=out)
print(open("wyniki6.txt", encoding="utf-8").read())
# wykres kolumnowy grupowany: trzy kolumny (owoce) przy każdym miesiącu
import matplotlib.pyplot as plt
months = list(summary)
width = 0.25
for k, fruit in enumerate(["maliny", "truskawki", "porzeczki"]):
positions = [m + (k - 1) * width for m in range(len(months))] # przesunięcie serii
plt.bar(positions, [summary[month][k] for month in months], width, label=fruit)
plt.xticks(range(len(months)), months)
plt.xlabel("miesiąc")
plt.ylabel("dostawy [kg]")
plt.title("Dostawy owoców do przetwórni w 2020 roku")
plt.legend()
plt.show()Ł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.