Python

Ошибка в программе

Почему выдаёт ошибку?
print('Начало')
a = '12345678'
print('Введите число от 1 до 8')
x1 = input("Введите x1 - ")
while x1 not in a:
print('Нет, Вы ошиблись')
x1 = input('Введите x1 - ')
y1 = input('Введите y1 - ')
while y1 not in a:
print('Нет, Вы ошиблись')
y1 = input('Введите y1 - ')
x2 = input('Введите x2 - ')
while x2 not in a:
print('Нет, Вы ошиблись')
x2 = input('Введите x2 - ')
y2 = input('Введите y2 - ')
while y2 not in a:
print('Нет, Вы ошиблись')
y2 =input('Введите y2 - ')
if (x1 + y1 + x2 + y2) % 2 == 0:
print('YES')
else:
print('NO')
print('Конец')
 print('Начало') 

a = '12345678'
print('Введите число от 1 до 8')

x1 = input("Введите x1 - ")
while x1 not in a:
print('Нет, Вы ошиблись')
x1 = input('Введите x1 - ')

y1 = input('Введите y1 - ')
while y1 not in a:
print('Нет, Вы ошиблись')
y1 = input('Введите y1 - ')

x2 = input('Введите x2 - ')
while x2 not in a:
print('Нет, Вы ошиблись')
x2 = input('Введите x2 - ')

y2 = input('Введите y2 - ')
while y2 not in a:
print('Нет, Вы ошиблись')
y2 =input('Введите y2 - ')

if (int(x1) + int(y1) + int(x2) + int(y2)) % 2 == 0:
print('YES')
else:
print('NO')

print('Конец')
ER
Emil Rustamov
67 252
Лучший ответ
Игорь Волков Можешь, пожалуйста объяснить почему так?
if (int(x1) + int(y1) + int(x2) + int(y2)) % 2 == 0:
В строке 13 уберите пробел между while и y1, в строке 15 сделайте то же. Вообще, если Вам нужно пропускать только цифры то вы могли бы написать так:
<code>x1 = input("Введите x1 - ")
while not x1.isdigit():
print('Нет, Вы ошиблись')
x1 = input('Введите x1 - ')
</code>
Вы пишите что начало блока в строке 4 а заканчиваете 6. Оставьте блоки открытыми пока не закончили определение начала и конца. Только тогда закройте блок.
<code>while условие: #Каждый блок с проверкой откройте на новой строке
print("Инструкция или еще что то")
</code>
Далее Вы используете str для перевода из чисел в строки. Какой же кошмар если же это будет само число то в последствие в нем никакого надобности не будет и его можно будет просто убрать и числа обработать как числа.
И далее, вот в этой строке
<code>if (x1 + y1 + x2 + y2) % 2 == 0:
</code>
Вы пытаетесь просто прибавить к числам ксложение других чисел. Чтобы складывать не числа а числа преобразованные из строки надо явно преобразовывать числа и плюс добавить спереди str если опять что то выйдет не то скорее всего либо пропущен знак плюс либо ключевое слово стр написано не так
Запишите код на скрин и лучше поставьте визуальный редактор вот ссылка редактор на thumbtack пошагово Вам покажет какие ошибки и где Вы вносили. Ничего страшного, каждый новичек делал и так. Пока что вы пишете функции без определения функций наверно даже лучше нарисовать чертеж как по шагам решается задача, а потом уже карандашом выбираешь на каком этапе какую функцию записою. С прикидками нужно быть осторожными.
АЛ
Артем Лебедь
16 137
Переведи в числа
SD
Sweet Deagle Give Fuck
1 112
Игорь Волков Объясни подробнее пожалуйста