Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 13, 2018 15:21:03

zootycoon
Зарегистрирован: 2018-11-13
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачкой

Привет всем. Я тут начал изучать 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, во втором он не ругается, но код неправильный)))
Заранее извиняюсь за такой столб текста, ошибки в тексте и все остальное.
Очень хочу разобраться в этом!

Офлайн

#2 Ноя. 13, 2018 17:12:57

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Помогите с задачкой

zootycoon
А вот мои 2 кода:
М-м-м это игра “найди десять отличий”, сколько не смотрел оба кода абсолютно идентичны
zootycoon
СУТЬ в том что я не могу разобраться когда нужно при переносе строки обособлять код апострофами, а когда не нужно, в первом случае ругается PEP8, во втором он не ругается, но код неправильный)))
Какие апострофы? вы о чем? откуда вы вообще взяли эти апострофы в PEP8? если под апострофами вы подразумеваете одинарные кавычки то в одинарные кавычки заключают строки, и во втором случае у вас в условии просто конкатенация двух строк, а в пайтоне непустая строка всегда возвращает True, поэтому у вас всегда будет ‘YES’.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Ноя. 13, 2018 17:16:52)

Офлайн

#3 Ноя. 13, 2018 19:34:36

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Помогите с задачкой

А зачем нужен перевод строки?
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:



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Отредактировано ZerG (Ноя. 13, 2018 19:34:54)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version