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