Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Python if/elif/else почему ошибка на последнем else

Ярослава Дымская Знаток (254), на голосовании 2 недели назад
login = 'admin'
#Спросите у пользователя логин и сравните со своим
user_login = input('Ваш логин: ')
if user_login == login:
print('Добро пожаловать, создатель! Что вы хотите изменить?')
if user_login != login:
print('Добро пожаловать,', user_login,'!')
command = input('Какую команду вы выберете?')
#Допишите условие для запуска команды и другой исход при отсутствии команды
if command == "Текстовая игра":
print("Здравствуйте!")
door=int(input("Какую дверь выберешь?"))
if door==1:
print("You died!")
if door==2:
print("You won!")
if door==3:
print("You met Luffy and entered the world of One Piece.")

elif command == "квиз":
point = 0
#Напиши свой квиз!
name = input("Whats your name?")
age = int(input("Сколько тебе лет?"))
print("Привет!Это квиз о знании вселенной Ван Пис!")
q1 = input("Как зовут гг?")
if q1 == "Luffy":
print("Верно!")
point += 1
else:
print("Неверно!Правильный ответ - Luffy")
print("Количество ваших очков:", point )
q2 = int(input("Сколько лет Луффи до таймскипа?"))
if q2 == 17:
print("Верно!")
point += 1
else:
print("Неверно!Правильный ответ - 17")
print("Количество ваших очков:", point )
q3 = int(input("Сколько у Луффи братьев?"))
if q3 == 1 or q3 == 2:
print("Верно!")
point += 1
else:
print("Неверно!Правильный ответ- 1 or 2")
print("Количество ваших очков:", point )
q4 = (input("Кто прошлые владелецы шляпы Луффи?"))
q5 = (input("Кто прошлые владелецы шляпы Луффи?"))
if q4 == "Роджер" and q5 == "Шанкс":
print("Верно!")
point += 1
else:
print("Неверно!Правильный ответ-Роджер, Шанкс")
print("Количество ваших очков:", point )
q6 = input("Как зовут Белоуса?")
if q6 == "Эдвард":
print("Верно!")
point += 1
else:
print("Неверно!Правильный ответ - Эдвард")
print("Количество ваших очков:", point )
print("Поздравляю вы прошли квиз!" )
else:
print("такой команды нет")
почему ошибка на последнем else
соре за кринж
Дополнен 1 месяц назад
типо у меня 2 команды есть и мне нужно сделать, чтобы на любые другие команды писалось "Такой команды нет"
Голосование за лучший ответ
dsasdadwd awdawdaw Профи (959) 1 месяц назад
Ошибка в вашем коде возникает из-за неправильной структуры блоков if/elif/else. Проблема в том, что else: находится вне блока, к которому он должен принадлежать. Он должен быть частью блока if/elif для обработки команд.

Вот исправленный код:

login = 'admin'
# Спросите у пользователя логин и сравните со своим
user_login = input('Ваш логин: ')
if user_login == login:
print('Добро пожаловать, создатель! Что вы хотите изменить?')
else: # Используем else вместо второго if
print('Добро пожаловать,', user_login, '!')
command = input('Какую команду вы выберете?')
# Допишите условие для запуска команды и другой исход при отсутствии команды
if command == "Текстовая игра":
print("Здравствуйте!")
door = int(input("Какую дверь выберешь?"))
if door == 1:
print("You died!")
if door == 2:
print("You won!")
if door == 3:
print("You met Luffy and entered the world of One Piece.")

elif command == "квиз":
point = 0
# Напиши свой квиз!
name = input("Whats your name?")
age = int(input("Сколько тебе лет?"))
print("Привет!Это квиз о знании вселенной Ван Пис!")
q1 = input("Как зовут гг?")
if q1 == "Luffy":
print("Верно!")
point += 1
else:
print("Неверно!Правильный ответ - Luffy")
print("Количество ваших очков:", point)
q2 = int(input("Сколько лет Луффи до таймскипа?"))
if q2 == 17:
print("Верно!")
point += 1
else:
print("Неверно!Правильный ответ - 17")
print("Количество ваших очков:", point)
q3 = int(input("Сколько у Луффи братьев?"))
if q3 == 1 or q3 == 2:
print("Верно!")
point += 1
else:
print("Неверно!Правильный ответ- 1 or 2")
print("Количество ваших очков:", point)
q4 = (input("Кто прошлые владелецы шляпы Луффи?"))
q5 = (input("Кто прошлые владелецы шляпы Луффи?"))
if q4 == "Роджер" and q5 == "Шанкс":
print("Верно!")
point += 1
else:
print("Неверно!Правильный ответ-Роджер, Шанкс")
print("Количество ваших очков:", point)
q6 = input("Как зовут Белоуса?")
if q6 == "Эдвард":
print("Верно!")
point += 1
else:
print("Неверно!Правильный ответ - Эдвард")
print("Количество ваших очков:", point)
print("Поздравляю вы прошли квиз!")
else:
print("такой команды нет")

python
dsasdadwd awdawdawПрофи (959) 1 месяц назад
Основные изменения и объяснения:

Замена второго if на else: Вместо второго if user_login != login: мы используем else:. Это логически правильно, потому что если логин не равен ‘admin’, то нужно выполнять блок кода для обычного пользователя. Два отдельных if привели бы к тому, что оба блока могли бы выполниться, если бы логин не был ‘admin’.

Правильное выравнивание else: Самое главное - убедитесь, что else: находится на том же уровне отступа, что и if и elif, к которым он относится. В данном случае, он должен быть внутри блока else первого if (проверка логина). Он должен быть на том же уровне, что и if command == "Текстовая игра":.
dsasdadwd awdawdaw Профи (959) dsasdadwd awdawdaw, Почему важно правильное выравнивание (отступы): Python использует отступы, чтобы определять, какие строки кода принадлежат к какому блоку (например, к if, else, for, while и т.д.). Неправильные отступы приводят к синтаксическим ошибкам, потому что Python не может понять, как код должен быть структурирован. В вашем исходном коде, else: не был частью блока if/elif, поэтому Python выдавал ошибку.
Ярослава ДымскаяЗнаток (254) 1 месяц назад
спасибо большое!!!очень быстро ответили
dsasdadwd awdawdaw Профи (959) Ярослава Дымская, Пожалуйста) Стараюсь как могу)
Похожие вопросы