82 lines
3.7 KiB
Python
82 lines
3.7 KiB
Python
|
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()
|
|||
|
|