На каждой итерации первого цикла, значение элемента с индексом i-1 (предыдущего элемента) заменяется на значение элемента с индексом i (текущего элемента). Это приводит к сдвигу всех элементов списка на одну позицию влево, кроме первого элемента, который заменяется на второй.
Последний элемент списка дублируется, потому что в последней итерации цикла for i in range(1, 6) нет "следующего" элемента, значение которого можно было бы присвоить предыдущему. На выходе получается "2 3 4 5 6 6".
Символ // используется для выполнения целочисленного деления. В результате такого деления получается целое число, дробная часть отбрасывается. Например, результатом деления 5 на 2 будет 2, а не 2.5.
Python f-строки позволяют форматировать строки внутри фигурных скобок. Обычно вы вставляете строку без дополнительного форматирования, но можете также задать определённую ширину для вставляемой строки, используя двоеточие после имени переменной, за которым следует необходимая ширина.
В этом случае строка будет выровнена по левому краю, а свободное место заполнится пробелами. Кроме того, вы можете указать выравнивание по правому краю, по центру, добавив символ выравнивания (>, ^) перед шириной и указать символ заполнения.
Тут всё достаточно просто, если A - True, то печатается one; если B - True, то печатается Python. Если ни одна из переменных не является истиной, код выведет Ciao!
Переменная B равна True, поэтому печатается Python
Да-да, мы можем использовать оператор вычитания при работе с множествами. В данном случае он будет работать подобно методу difference(), а значит, находить разность множеств.
Результатом такой операции — является множество, элементы которого содержатся в первом оригинальном множестве, но не содержатся во втором