В этом коде возникает TypeError потому что метод sort() в Python не может сравнивать числа разных типов — в данном случае целые числа (4, 5) и комплексное число 1j.
Когда Python пытается отсортировать этот список, он должен сравнить элементы между собой, чтобы определить их порядок. Однако у нас нет встроенного способа сравнить целое число с комплексным числом, так как это математически не имеет смысла.
Или если бы вы хотели сортировать по модулю комплексных чисел:
y = [4, 5, 1j] y.sort(key=abs) # Сортировка по модулю числа
1. У вас есть список a = ['hat', 'mat', 'rat'] 2. Когда вы вызываете 'rhyme'.join(a), Python: - Берет первый элемент 'hat' - Добавляет РАЗДЕЛИТЕЛЬ 'rhyme' - Берет второй элемент 'mat' - Добавляет разделитель 'rhyme' - Берет третий элемент 'rat'
Таким образом, получается: - 'hat' + 'rhyme' + 'mat' + 'rhyme' + 'rat' = 'hatrhymematrhymerat'
Разделитель добавляется ТОЛЬКО между элементами списка, но не в начале и не в конце. Поэтому в результате мы видим 'rhyme' только между словами, но не в начале или конце строки.
В коде есть глобальная переменная x = 10. В функции func() есть операция del x. Когда Python видит операцию del x внутри функции, он считает x локальной переменной этой функции. Но при этом, когда выполняется print(x), Python пытается использовать локальную переменную x, которая еще не была инициализирована (так как del x выполняется после).
Метод __bool__ управляет логическим значением объекта. В данном случае он всегда возвращает False, и условие if a: не выполняется, поэтому печатается No.