При присвоении переменной значения неправильного типа в Python можно использовать исключение ValueError. Ваш подход с использованием блока try-except в целом верен, однако есть несколько моментов, которые можно исправить: 1. Вместо обработки исключения TypeError, следует обрабатывать исключение ValueError, так как неправильное преобразование строки в число вызывает именно это исключение. 2. Вместо использования блока try-except, можно использовать функцию isinstance() для проверки типа переменной. Если переменная - это число, то привести ее к типу int, иначе оставить без изменений. 3. Вместо временной переменной temp_var, можно использовать более компактный способ обмена значений двух переменных - через кортеж (tuple). Также стоит помнить, что при обмене переменными без использования временной переменной, значения переменных не потеряются, даже если одно из них будет изменено. Например, переписанный вариант может выглядеть так: if isinstance(var1, str) and isinstance(var2, int): var1, var2 = int(var1), var2 elif isinstance(var1, int) and isinstance(var2, str): var1, var2 = var2, int(var1) В данном коде мы проверяем типы переменных var1 и var2. Если var1 является строкой и var2 является числом, то преобразуем var1 в число и присваиваем ему значение var2. Если var1 является числом и var2 является строкой, то присваиваем var2 значение var1, а var1 преобразуем в число. Таким образом, в результате выполнения этого кода, если пользователь перепутал типы данных, var1 и var2 будут переопределены в соответствии с условиями.