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()
|
||
|