Python/Lab_7/Lab_6.py

82 lines
3.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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