Вы используете условие «или». В условии «или» он сначала проверяет первый упомянутый оператор. Он проверяет, совпадают ли 1-й и последний элементы строки. Если 1-й оператор удовлетворяет (только если задан действительный ввод - непустая строка), он войдет в условие if без проверки 2-го оператора. Но если 1-й оператор не работает (1-й и последний элементы строки не совпадают), он затем проверяет наличие 2-го оператора.
Но в этом случае 1-й оператор не получает действительный ввод ie получает пустую строку. Из-за недопустимого ввода (пустая строка) возникает ошибка. Он проверяет, верны ли утверждения или нет, только если дан допустимый ввод. Если введен недопустимый ввод, он остановит выполнение и выдаст ошибку.
Вы можете внести небольшие изменения в код и получить желаемый результат.
def first_and_last(message):
if message:
if message[0] == message[-1]:
return True
else:
return False
return False
print(first_and_last("else"))
print(first_and_last("tree"))
print(first_and_last(""))
См. Снимок ниже для вывода
введите описание изображения здесь