Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 5, 2015 07:00:38

TohaTony
Зарегистрирован: 2015-04-05
Сообщения: 31
Репутация: +  1  -
Профиль   Отправить e-mail  

Эти странные слеши

Изучаю питон по книге Майкла Доусона. Там одна из первых программ демонстрирует работу со строками, а именно со строками в тройных кавычках. При запуке происходит какой-то сдвиг. То, что проблема в слешах - это понятно. Они подсвечиваются. И если их заменить на другие символы, то сдвиг не произойдет.
Но почему они себя так ведут? И именно эти слеши? А самый последний слеш вообще не отрисовывается. А если тройные кавычки подвинуть к нему и оставить через пробел, то он отрисовывается (\ “”").
И то, что это связанно с экранированием - тоже понятно. Но, что они тут экранируют - не ясно.
Ссылку на картинку вставил, но она не отображается. Скриншот залил на хостинг. Ссылка чуть ниже.


Your text to link here…

print(
        """
         _____       ___       ___  ___   _____
        /  ___|     /   |     /   |/   | |  ___|
        | |        / /| |    / /|   /| | | |__
        | |  _    / ___ |   / / |__/ | | |  __|
        | |_| |  / /  | |  / /       | | | |___
        \_____/ /_/   |_| /_/        |_| |_____|
         _____   _     _   _____   _____
        /  _  \ | |   / / |  ___| |  _  \
        | | | | | |  / /  | |__   | |_| |
        | | | | | | / /   |  __|  |  _  /
        | |_| | | |/ /    | |___  | | \ \
        \_____/ |___/     |_____| |_|  \_\
        """
     )
     

Отредактировано TohaTony (Апрель 5, 2015 07:12:18)

Офлайн

#2 Апрель 5, 2015 08:42:36

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Эти странные слеши

>>> print(
...         r"""
...          _____       ___       ___  ___   _____
...         /  ___|     /   |     /   |/   | |  ___|
...         | |        / /| |    / /|   /| | | |__
...         | |  _    / ___ |   / / |__/ | | |  __|
...         | |_| |  / /  | |  / /       | | | |___
...         \_____/ /_/   |_| /_/        |_| |_____|
...          _____   _     _   _____   _____
...         /  _  \ | |   / / |  ___| |  _  \
...         | | | | | |  / /  | |__   | |_| |
...         | | | | | | / /   |  __|  |  _  /
...         | |_| | | |/ /    | |___  | | \ \
...         \_____/ |___/     |_____| |_|  \_\
...         """
...      )
         _____       ___       ___  ___   _____
        /  ___|     /   |     /   |/   | |  ___|
        | |        / /| |    / /|   /| | | |__
        | |  _    / ___ |   / / |__/ | | |  __|
        | |_| |  / /  | |  / /       | | | |___
        \_____/ /_/   |_| /_/        |_| |_____|
         _____   _     _   _____   _____
        /  _  \ | |   / / |  ___| |  _  \
        | | | | | |  / /  | |__   | |_| |
        | | | | | | / /   |  __|  |  _  /
        | |_| | | |/ /    | |___  | | \ \
        \_____/ |___/     |_____| |_|  \_\
        
>>>

Это происходит из-за того, что есть такой синтаксис ещё со времён C, когда слишком длинную строку можно перенести с помощью бэкслеша в конце.
>>> 'abc\
... xxx'
'abcxxx'
>>>
>>> '''abc\
... xxx'''
'abcxxx'
>>>

Так что при рисовании лучше ставить r в начале, чтобы не отвлекаться на экранирования, либо там в конце бэкслеш должен быть не последним, а стоять перед пробелом.



Отредактировано py.user.next (Апрель 5, 2015 08:56:56)

Офлайн

#3 Апрель 5, 2015 09:25:23

TohaTony
Зарегистрирован: 2015-04-05
Сообщения: 31
Репутация: +  1  -
Профиль   Отправить e-mail  

Эти странные слеши

Спасибо!
Но они всё-равно странно себя ведут. В коде всего три строки, которые заканчиваются обратным слешем. Беда в том, что из них можно поставить пробел только у одного. Точнее говоря поставить можно у всех, но когда запускаешь скрипт, то пробел остается только у того обратного слеша, у которого ты поставил его последним. Остальные при запуске автоматом удаляются.
Проверил на двух других IDE. По ходу это Pycharm капризничает. В питоновском ide и на ide онлайн - всё отрисовалось правильно.
Pycharm скорее всего сам подтирает пробелы.

Отредактировано TohaTony (Апрель 5, 2015 10:00:15)

Офлайн

#4 Апрель 5, 2015 09:56:48

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Эти странные слеши

TohaTony
Pycharm скорее всего сам подтирает пробелы.
Ну да, некоторые так делают. Поищи там в настройках, возможно, есть способ отключить форматирование.



Офлайн

#5 Апрель 16, 2015 23:08:55

jamesjogi08
Зарегистрирован: 2015-04-16
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Эти странные слеши

_____ ___ ___ ___ _____
/ ___| / | / |/ | | ___|
| | / /| | / /| /| | | |__
| | _ / ___ | / / |__/ | | | __|
| |_| | / / | | / / | | | |___
\_____/ /_/ |_| /_/ |_| |_____|
_____ _ _ _____ _____
/ _ \ | | / / | ___| | _ \
| | | | | | / / | |__ | |_| |
| | | | | | / / | __| | _ /
| |_| | | |/ / | |___ | | \ \
\_____/ |___/ |_____| |_| \_\



Точнее говоря поставить можно у всех, но когда запускаешь скрипт, то пробел остается только у того обратного слеша, у которого ты поставил его последним.



*Signature*

Офлайн

#6 Апрель 17, 2015 02:10:47

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Эти странные слеши

Пробелы могут стираться на концах строк.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version