В первом выражении
0 and 1, оператор and возвращает первый операнд (0), если он ложный, и второй операнд (1), если первый операнд истинный. Поскольку 0 оценивается как ложный, результатом будет 0Во втором выражении
0 or 1 or 2, оператор or возвращает первый истинный операнд, в этом случае 1, поскольку 0 оценивается как ложный, но 1 оценивается как истинныйВ третьем выражении
1 and 2 вернет 2, потому что оператор and продолжает проверку до последнего значения и возвращает его, если все значения истинные, и возвращает последнее значение. Сначала проверяется 1 (которое является истинным), затем 2 (которое также является истинным). В итоге возвращается и печатается 2