← Назад к вопросам

Конвертация температуры

2.0 Middle🔥 111 комментариев
#Теория тестирования

Условие

Напишите функции для конвертации температуры между Цельсием, Фаренгейтом и Кельвином.

Формулы

C to F: F = C x 9/5 + 32 C to K: K = C + 273.15

Пример

Вход: 0 Celsius Выход: 32 Fahrenheit, 273.15 Kelvin

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Решение

Анализ задачи

Необходимо разработать функции для конвертации температуры между тремя шкалами: Цельсием (°C), Фаренгейтом (°F) и Кельвином (K). Это типичная задача на алгоритмическое мышление, которая часто встречается в собеседованиях QA Automation Engineer, так как требует понимания математических преобразований и написания надёжного кода.

Решение

Создам набор функций для преобразования температуры в обе стороны между всеми тремя шкалами:

class TemperatureConverter:
    """Класс для конвертации температуры между Цельсием, Фаренгейтом и Кельвином."""
    
    @staticmethod
    def celsius_to_fahrenheit(celsius: float) -> float:
        """Конвертирует Цельсий в Фаренгейт."""
        return celsius * 9/5 + 32
    
    @staticmethod
    def celsius_to_kelvin(celsius: float) -> float:
        """Конвертирует Цельсий в Кельвин."""
        return celsius + 273.15
    
    @staticmethod
    def fahrenheit_to_celsius(fahrenheit: float) -> float:
        """Конвертирует Фаренгейт в Цельсий."""
        return (fahrenheit - 32) * 5/9
    
    @staticmethod
    def fahrenheit_to_kelvin(fahrenheit: float) -> float:
        """Конвертирует Фаренгейт в Кельвин."""
        celsius = TemperatureConverter.fahrenheit_to_celsius(fahrenheit)
        return TemperatureConverter.celsius_to_kelvin(celsius)
    
    @staticmethod
    def kelvin_to_celsius(kelvin: float) -> float:
        """Конвертирует Кельвин в Цельсий."""
        return kelvin - 273.15
    
    @staticmethod
    def kelvin_to_fahrenheit(kelvin: float) -> float:
        """Конвертирует Кельвин в Фаренгейт."""
        celsius = TemperatureConverter.kelvin_to_celsius(kelvin)
        return TemperatureConverter.celsius_to_fahrenheit(celsius)
    
    @staticmethod
    def convert(value: float, from_unit: str, to_unit: str) -> float:
        """Универсальный метод конвертации между любыми единицами."""
        units = {"C": "celsius", "F": "fahrenheit", "K": "kelvin"}
        
        if from_unit.upper() not in units or to_unit.upper() not in units:
            raise ValueError(f"Неподдерживаемая единица: {from_unit} или {to_unit}")
        
        if from_unit.upper() == to_unit.upper():
            return value
        
        # Сначала приводим к Цельсию
        if from_unit.upper() == "C":
            celsius = value
        elif from_unit.upper() == "F":
            celsius = (value - 32) * 5/9
        else:  # K
            celsius = value - 273.15
        
        # Затем конвертируем из Цельсия в целевую единицу
        if to_unit.upper() == "C":
            return celsius
        elif to_unit.upper() == "F":
            return celsius * 9/5 + 32
        else:  # K
            return celsius + 273.15

Примеры использования

# Прямое использование методов
print(TemperatureConverter.celsius_to_fahrenheit(0))   # Output: 32.0
print(TemperatureConverter.celsius_to_kelvin(0))       # Output: 273.15

# Универсальный метод
print(TemperatureConverter.convert(0, "C", "F"))       # Output: 32.0
print(TemperatureConverter.convert(0, "C", "K"))       # Output: 273.15
print(TemperatureConverter.convert(32, "F", "C"))      # Output: 0.0

Ключевые моменты

Преимущества подхода:

  • Инкапсуляция всех методов в одном классе
  • Универсальный метод convert() позволяет конвертировать между любыми единицами
  • Все формулы выведены математически (обратные преобразования)
  • Стабильная точность для стандартных значений

Автоматизация тестирования: Для QA Automation Engineer важно проверить граничные случаи, точность вычислений и обработку некорректных входных данных.