В этом уроке разберёмся, что такое строка и какую роль играют кавычки в коде.
Строка — это просто набор символов, заключённый в кавычки. Посмотрим на примеры:
'Hello'
'Goodbye'
'G'
' '
''
Все эти варианты — строки.
'Hello'
и 'Goodbye'
— это строки из нескольких символов.'G'
— строка из одного символа.' '
— строка, состоящая из одного пробела.''
— пустая строка, в ней нет ни одного символа.То есть всё, что находится внутри кавычек, считается строкой: даже если там только пробел или вообще ничего нет.
В Python строки можно записывать как в одинарных, так и в двойных кавычках:
print('Hello')
print("Hello")
Оба варианта работают одинаково. Главное — использовать один и тот же тип кавычек в начале и в конце строки.
Хотя Python поддерживает оба варианта, по умолчанию принято использовать одинарные кавычки '
, если внутри строки не требуется двойных. Этого стиля придерживается официальный стандарт PEP8 и линтер Ruff, который мы используем на платформе. Он может автоматически заменить двойные кавычки на одинарные там, где это возможно.
Представьте, что вы хотите напечатать строку Dragon's mother. В ней есть апостроф ('s) — это тот же символ, что и одинарная кавычка. Попробуем так:
print('Dragon's mother')
# SyntaxError: invalid syntax
Python решит, что строка заканчивается после слова 'Dragon', а остальное не распознает как валидный код — возникнет синтаксическая ошибка. Чтобы избежать этого, обернём строку в двойные кавычки:
print("Dragon's mother")
Теперь Python понимает, что одинарная кавычка внутри строки — это обычный символ, а сама строка начинается и заканчивается двойными кавычками.
Если внутри строки нужны двойные кавычки, а снаружи — одинарные, проблем тоже не будет:
print('He said "No"')
Иногда в строке встречаются оба типа кавычек:
Dragon's mother said "No"
В этом случае, чтобы Python не спутал кавычки внутри строки с внешними, используют символ экранирования — обратный слэш \
. Он говорит интерпретатору: следующий за ним символ — часть строки, а не управляющий символ.
print("Dragon's mother said \"No\"")
# => Dragon's mother said "No"
В этом примере мы экранируем двойные кавычки внутри строки, заключённой в двойные кавычки.
Обратите внимание: Python воспринимает \"
как один символ — кавычку, а не два символа.
То же самое касается \'
, \\
, \n
и других управляющих последовательностей — они выглядят как два символа в коде, но в строке считаются за один.
То же самое работает и в обратном случае:
print('Dragon\'s mother said "No"')
# => Dragon's mother said "No"
Чтобы вывести сам обратный слэш, его тоже нужно экранировать:
print("\\")
# => \
Напишите программу, которая выведет на экран:
"Khal Drogo's favorite word is "athjahakar""
Программа должна вывести на экран эту фразу в точности. Обратите внимание на кавычки в начале и в конце фразы:
"Khal Drogo's favorite word is "athjahakar""
Команда проекта находится в телеграм-сообществе по ссылке https://ttttt.me/HexletLearningBot. Там можно задать любой вопрос и повлиять на проект
Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "Обсуждение". Как правильно задать вопрос:
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества
Привет! Я Тота и моя задача помочь в обучении. Чтобы активировать меня, нужно зарегистрироваться или залогиниться, если у вас уже есть аккаунт
Ваше упражнение проверяется по этим тестам
1from hexlet.test import expect_output
2
3
4def test(capsys):
5 expected = '"Khal Drogo\'s favorite word is "athjahakar""'
6 expect_output(capsys, expected)
7
Решение учителя откроется через: