Найти - Пользователи
Полная версия: Помогите с задачкой
Начало » Python для новичков » Помогите с задачкой
1
zootycoon
Привет всем. Я тут начал изучать Python самостоятельно путем решение всяких задач. Помогите, пожалуйста, с вот этой вот задачкой. Объясните почему в одном случае у меня получается такой ответ, в другом другой, хотя эти 2 кода практически одинаковы.

Вот сама задача :

Шахматный король ходит по горизонтали, вертикали и диагонали, но только на 1 клетку. Даны две различные клетки шахматной доски, определите, может ли король попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки. Программа должна вывести YES, если из первой клетки ходом короля можно попасть во вторую или NO в противном случае.

А вот мои 2 кода:

Правильный:

a1 = int(input())
a2 = int(input())
b1 = int(input())
b2 = int(input())
if ‘((a1 == b1) or (a1 + 1 == b1) or (a1 - 1 == b1)) and’ + \
‘((a2 == b2) or (a2 + 1 == b2) or (a2 - 1 == b2))’:
print('YES')
else:
print('NO')

Неправильный:

a1 = int(input())
a2 = int(input())
b1 = int(input())
b2 = int(input())
if ‘((a1 == b1) or (a1 + 1 == b1) or (a1 - 1 == b1)) and’ + \
‘((a2 == b2) or (a2 + 1 == b2) or (a2 - 1 == b2))’:
print('YES')
else:
print('NO')

Сразу скажу что мне нужен этот перенос строки, и вот в первом случае когда я не обособляю апострофами код, то все нормально
Когда обособляю, то код ломается
Введите в 1 программу 1, 1, 1, 8 и он выдаст ‘NO’ и это будет правильно, во 2 программу введите тоже самое и он выдаст ‘YES’ и это будет неправильно.
СУТЬ в том что я не могу разобраться когда нужно при переносе строки обособлять код апострофами, а когда не нужно, в первом случае ругается PEP8, во втором он не ругается, но код неправильный)))
Заранее извиняюсь за такой столб текста, ошибки в тексте и все остальное.
Очень хочу разобраться в этом!
PEHDOM
zootycoon
А вот мои 2 кода:
М-м-м это игра “найди десять отличий”, сколько не смотрел оба кода абсолютно идентичны
zootycoon
СУТЬ в том что я не могу разобраться когда нужно при переносе строки обособлять код апострофами, а когда не нужно, в первом случае ругается PEP8, во втором он не ругается, но код неправильный)))
Какие апострофы? вы о чем? откуда вы вообще взяли эти апострофы в PEP8? если под апострофами вы подразумеваете одинарные кавычки то в одинарные кавычки заключают строки, и во втором случае у вас в условии просто конкатенация двух строк, а в пайтоне непустая строка всегда возвращает True, поэтому у вас всегда будет ‘YES’.
ZerG
А зачем нужен перевод строки?
PEHDOM вам правильно указал на ошибку.
Все что у питона находится между кавычками (одинарными или двойными) это строка (type String)
Поэтому там у вас не условия а текст.

Можно еще делать немного иначе, разбив на сегменты ваши:
 a1 = 3
b1 = 1
cheker1 = ((a1 == b1) or (a1 + 1 == b1) or (a1 - 1 == b1))
print(type(cheker1), cheker1)

<class ‘bool’> False

Ну и в коде у себя потом
 if cheker1 and checkerx:
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB