from random import choice, randint

class WeatherType:
    def __init__(self, weathers, temperature_day_range,
            temperature_night_offset_range, wind_range, humidity_range):
        self.__weathers = weathers
        self.__min_temp_day, self.__max_temp_day = \
                tuple(temperature_day_range)
        self.__min_temp_night_offset, self.__max_temp_night_offset = \
                tuple(temperature_night_offset_range)
        self.__min_wind_speed, self.__max_wind_speed = \
                tuple(wind_range)
        self.__min_humidity, self.__max_humidity = \
                tuple(humidity_range)

    def get_weather(self):
        weather = choice(self.__weathers)
        temperature_day = randint(self.__min_temp_day, self.__max_temp_day)
        temperature_night = temperature_day - \
                randint(self.__min_temp_night_offset,
                        self.__max_temp_night_offset)
        humidity = randint(self.__min_humidity, self.__max_humidity)
        wind_speed = randint(self.__min_wind_speed, self.__max_wind_speed)

        return f"Weather: {weather}\n" + \
            f"Temperature day: {temperature_day}\n" + \
            f"Temperature night: {temperature_night}\n" + \
            f"Humidity: {humidity}\n" + \
            f"Wind speed: {wind_speed}\n"

weather_types = \
        [WeatherType(["sunny", "cloudy", "rain"],
                (3, 40), (2, 8), (2, 20), (10, 90)),
        WeatherType(["sunny", "cloudy", "snow"],
                (-25, 0), (3, 10), (2, 20), (10, 90))]

from random import choice, randint

wind_directions = [chr(0x2B06) + chr(0xFE0F),   # N
                   chr(0x27A1) + chr(0xFE0F),   # E
                   chr(0x2B05) + chr(0xFE0F),   # W
                   chr(0x2B07) + chr(0xFE0F),   # S
                   chr(0x2197) + chr(0xFE0F),   # NE
                   chr(0x2196) + chr(0xFE0F),   # NW
                   chr(0x2198) + chr(0xFE0F),   # SE
                   chr(0x2199) + chr(0xFE0F)]   # SW

class WeatherType:
    def __init__(self, weathers, temperature_day_range,
            temperature_night_offset_range, wind_range, humidity_range):
        self.__weathers = weathers
        self.__min_temp_day, self.__max_temp_day = \
                tuple(temperature_day_range)
        self.__min_temp_night_offset, self.__max_temp_night_offset = \
                tuple(temperature_night_offset_range)
        self.__min_wind_speed, self.__max_wind_speed = \
                tuple(wind_range)
        self.__min_humidity, self.__max_humidity = \
                tuple(humidity_range)

    def get_weather(self):
        weather = choice(self.__weathers)
        temperature_day = randint(self.__min_temp_day, self.__max_temp_day)
        temperature_night = temperature_day - \
                randint(self.__min_temp_night_offset,
                        self.__max_temp_night_offset)
        humidity = randint(self.__min_humidity, self.__max_humidity)
        wind_speed = randint(self.__min_wind_speed, self.__max_wind_speed)
        wind_direction = choice(wind_directions)

        return f"Weather: {weather}\n" + \
            f"Temperature day: {temperature_day}\n" + \
            f"Temperature night: {temperature_night}\n" + \
            f"Humidity: {humidity}\n" + \
            f"Wind speed: {wind_direction} {wind_speed}\n"

weather_types = \
        [WeatherType(["sunny", "cloudy", "rain"],
                (3, 40), (2, 8), (2, 20), (10, 90)),
        WeatherType(["sunny", "cloudy", "snow"],
                (-25, 0), (3, 10), (2, 20), (10, 90))]

Add wind direction