import random from collections import Counter from datetime import date from calendar import monthrange class Month: def __init__(self, name, m_number): days = monthrange(date.today().year, m_number)[1] self.name = name self.days = [(random.randint( 25 - 8*abs(7-m_number), 50 - 8*abs(7-m_number)), random.choice(["Дощ", "Сонце", "Хмара"])) for i in range(days)] def count_weather(self): return Counter([i[1] for i in self.days]) def avg_temp(self): return round(sum([i[0] for i in self.days]) / len([i[0] for i in self.days]), 2) def max_temp(self): return max([i[0] for i in self.days]) def min_temp(self): return min([i[0] for i in self.days]) month_names = ["Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"] year = {month_names[m_number]: Month(month_names[m_number], m_number+1) for m_number in range(12)} valid_actions = ["Погода", "Середня температура", "Мінімальна температура", "Максимальна температура", "Місяць", "Вихід"] if __name__ == "__main__": while True: while True: month_name = input("\nВведіть назву місяця: ") if month_name not in month_names: print("\nТакого місяця не існує, спробуйте ще раз.") continue else: break print("\nОберіть бажану дію:\n" " Погода - дізнатися кількість сонячних, хмарних і дощових днів.\n" " Середня температура - дізнатися середню температуру за місяць.\n" " Мінімальна температура - дізнатися мінімальну температуру за місяць.\n" " Максимальна температура - дізнатися максимальну температуру за місяць.\n" " Місяць - змініти введений місяць.\n" " Вихід - завершити роботу програми.\n" ) while True: action = input("> ") if action not in valid_actions: print("\nТакої дії не існує.\n") continue if action == valid_actions[0]: print(f"\nСонячних днів: {year[month_name].count_weather()['Сонце']}") print(f"Хмарних днів: {year[month_name].count_weather()['Хмара']}") print(f"Дощових днів: {year[month_name].count_weather()['Дощ']}\n") continue elif action == valid_actions[1]: print(f"\nСередня температура цього місяця: {year[month_name].avg_temp()}°\n") continue elif action == valid_actions[2]: print(f"\nМінімальна температура цього місяця: {year[month_name].min_temp()}°\n") continue elif action == valid_actions[3]: print(f"\nМаксимальна температура цього місяця: {year[month_name].max_temp()}°\n") continue elif action == valid_actions[4]: break else: print("\nВихід з програми.\n") exit()