Что такое строка в Python и как ее создать?

Строки, как следует из названия, представляют собой последовательность символов. Мы создаем его, заключая в кавычки. Для этой цели можно использовать двойные кавычки:

print("Это строка, 123 # $%")
Это строка, 123 # $%

Вы также можете использовать одинарные кавычки:

print('Это строка, 123 # $%')
Это строка, 123 # $%

Третий способ — использовать три двойные (или одинарные) кавычки с каждой стороны строки. Этот метод также позволяет напрямую создавать многострочные строки символов и сохранять отступы в тексте:

print("""Это 
      многострочная
         строка""")
Это 
      многострочная
         строка 

Использование тройных кавычек также имеет особое значение, они используются для создания так называемых строки документации при документировании кода. Однако это тема для другого урока.

Внутри строки можно помещать прямые кавычки, но другого типа, чем тот, который отмечает начало и конец строки:

print('Автором книги "Три мушкетера" был Александр Дюма.')
print("Дартаньян был мушкетером.")
print("""Дартаньян - герой книги "Три мушкетера".""")
Autorem książki "Trzej muszkieterowie" był Alexandre Dumas.
Дартаньян был мушкетером. Дартаньян - герой книги "Три мушкетера". 

Вы также можете заключить строку в кавычки того же типа, что и кавычки, окружающие строку, но в этом случае им должна предшествовать обратная косая черта \:

print("\"Монти Пайтон и Святой Грааль" - комедия 1975 года.")
"Монти Пайтон и Святой Грааль" - комедия 1975 года. 

В противном случае мы получим ошибку:

print(""Монти Пайтон и Святой Грааль" - комедия 1975 года.")
  File "<ipython-input-36-a0632a6b059e>", line 1
    print(""Monty Python i Święty Graal" to komedia filmowa z roku 1975.")
                ^
SyntaxError: invalid syntax

Как видите, сообщается о синтаксической ошибке ( SyntaxError: неверный синтаксис ).

На этом этапе стоит обратить внимание на знак, который мы использовали ранее: \. Это так называемый «escape-символ», который в текстовых строках меняет значение следующего символа. Выше он указал, что символ "следует рассматривать не как конец строки, а как «обычный» символ. Мы можем использовать \специальные символы для ввода текстовых строк, например, табуляцию ( \t) или новую строку ( \n). Если мы хотим напечатать, например, \tне табуляцию, а просто такую ​​строку символов, \ей также должен предшествовать символ \, тогда он трактуется как обычный символ:

print("\t Это текст с табуляцией,\n Это новая линия,\n а так можно \"экранировать\" знаки \"\\\": \\t")
    Это текст с табуляцией,
Это новая линия,
а так можно "экранировать" знаки "\": \t

Поначалу это может показаться сложным, но со временем вы привыкнете.

Другой способ создать строку — использовать функцию str(), которую также можно использовать для преобразования из других типов:

Кстати, обратите внимание, что в конце первой строки тоже есть символ \. Если строка кода слишком длинная, вы можете закончить ее этим символом и продолжить ввод кода на следующей строке. Это еще одно использование знака \.

cont = 7
print(type(cont))
cont1 = str(cont)
print(type(cont1))
cont2 = str(3.14)
print(type(cont2))
<class 'int'>
<class 'str'>
<class 'str'>

Подробнее о функциях print()и объединении последовательностей символов.

Давайте теперь подробнее рассмотрим функцию print(), которая, безусловно, является одной из наиболее часто используемых, по крайней мере, в программах текстового режима. До сих пор мы передали в функцию print()одну строку или переменную. Однако его возможности гораздо больше.

print("Кукуруза", "имеет ", 10, "пар хромосом")
Кукуруза имеет 10 пар хромосом

Как видите, мы передали функции print()несколько аргументов , включая четыре строки и одно число. Теперь проверим, как эта функция будет обращаться с переменными:

kukuryza = "Кукуруза"
tekst_1 = "имеет"
n = 10
tekst_2 = "пар хромосом"
print(kukuryza, tekst_1, n, tekst_2)
Кукуруза имеет 10 пар хромосом

Как видите, и в этом случае функция print()справилась с поставленной задачей.

Обратите внимание, что между каждым разделом печатного теста вставлены пробелы. Пробел является разделителем по умолчанию, но вы можете его изменить:

print(kukuryza, tekst_1, n, tekst_2, sep="_")
Кукуруза_имеет_10_пар хромосом

print(kukuryza, tekst_1, n, tekst_2, sep="\n") Кукуруза имеет 10 пар хромосом 

В первом случае новым разделителем было подчеркивание, во втором — новая строка, поэтому каждый аргумент записывался на экране с новой строки.

Строки могут быть объединены:

st = "Куку"
fin = "руза"
kukuryza = st + fin
print(kukuryza)
Кукуруза

Как видите, мы использовали оператор для объединения строк +, но обе строки были объединены без какого-либо разделителя, и нам, вероятно, хотелось бы разделить два слова пробелом. Вам нужно добавить его:

kukuryza = st + " " + fin
print(kukuryza)
Куку руза

Вы, конечно, можете пропустить создание переменной kukurydza:

print(st + " " + fin)
Куку руза

В этом случае смена разделителя не поможет, поскольку отдельные строки сначала объединяются и только потом передаются в функцию одним аргументом print():

print(st + " " + fin, sep="-")
Куку руза

Теперь попробуем добавить число в строку:

print(kukuryza + " имеет " + 10 + " пар хромосом.")
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-72-a7c1c190624c> in <module>
----> 1 print(kukurydza + " имеет " + 10 + " пар хромосом.")

TypeError: can only concatenate str (not "int") to str

На этот раз это не сработало. Это сообщение TypeError: can only concatenate str (not "int") to str означает, что вы можете объединять строки (str) только для получения строки, а не целого числа ( int). Поэтому нам нужно преобразовать число в текстовую строку, используя функцию str().

print(kukurydza + " имеет " + str(10) + " пар хромосом.")
Кукуруза имеет 10 пар хромосом

На этот раз число 10было преобразовано в строку, а затем склеено с остальными текстовыми строками. В это время вы также можете произвести расчеты, например:

print(kukurydza + " имеет 2n=" + str(10*2) + " хромосом.")
Кукуруза имеет 2n=20 хромосом.

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

F-строки в Python

Вышеописанные методы объединения строк, чисел и переменных работают, но не очень читабельны. В Python есть ряд способов упростить отображение комбинаций строк, чисел и результатов, возвращаемых функциями, но мы остановимся на самых новых и, следовательно, самых простых и эффективных (по крайней мере, на мой взгляд).

В версии 3.6языка Python появилась так называемая f-строки , которые улучшают прозрачность этого типа кода, а также предлагают дополнительные возможности. Давайте посмотрим на пример ниже:

m_rastvor = 50
m_substance = 5
print(f"Для массы раствора = {m_rastvor}g\n\
И массы растворенного вещества = {m_substance}g,\n\
Концентрация = {100*m_substance/m_rastvor}%")
Для массы раствора = 50g И массы растворенного вещества = 5g, Концентрация = 10.0% 

Как видите, перед первой кавычкой стоит буква, fкоторая указывает на то, что мы имеем дело с f-strings. Имена переменных, значения которых мы хотим напечатать, заключены в пару фигурных скобок {}, а также их можно разместить, например, в математических выражениях или вызовах функций, которые возвращают значения, которые мы хотим поместить. текст.

Давайте немного изменим приведенный выше пример, предоставив другие входные данные:

m_rastvor = 13
m_substance = 7.3
print(f"Для массы раствора = {m_rastvor}g\n\
    И массы растворенного вещества = {m_substance}g,\n\
     Концентрация = {100 * m_substance / m_rastvor}%")
Для массы раствора = 13g
И массы растворенного вещества = 7.3g,
Концентрация = 56.15384615384615%

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

Предположим, что точности до двух знаков после запятой достаточно. Мы могли бы использовать для этой цели функции round(), но f-stringsони допускают более удобное решение:

print(f"Для массы раствора = {m_rastvor}g\n\
    И массы растворенного вещества = {m_substance}g,\n\
     Концентрация = {100 * m_substance / m_rastvor:.2f}%")
Для массы раствора = 13g
И массы растворенного вещества = 7.3g,
Концентрация = 56.15%

Мы поместили , в конце выражения, которое возвращает число с плавающей запятой :.2f, что означает, что должны быть напечатаны два десятичных знака (после округления).

Теперь давайте посмотрим на этот код:

m_rastvor = 13
m_substance = 7.3
print(f"Для массы раствора = {m_rastvor:.2f}g\n\
    И массы растворенного вещества = {m_substance:.2f}g,\n\
     Концентрация = {100 * m_substance / m_rastvor:.2f}%")
Для массы раствора = 13.00g
И массы растворенного вещества = 7.30g,
Концентрация = 56.15%

Мы использовали тройные кавычки, чтобы упростить разделение результата на три строки (ранее мы использовали для этой цели символы \n), а также отформатировали все числовые данные так, чтобы они всегда отображали два знака после запятой. Это делает представленные результаты более эстетичными. Говоря об эстетике, вы также можете выровнять цифры по вертикали, используя соответствующее количество пробелов (вы также можете использовать табуляцию):

print(f"""
Для массы раствора:              {m_rastvor:.2f}g\n\
И массы растворенного вещества:  {m_substance:.2f}g,\n\
Концентрация:                    {100 * m_substance / m_rastvor:.2f}%
""")Для массы раствора: 13.00g
И массы растворенного вещества: 7.30g,
Концентрация:                   56.15%

Если мы хотим выровнять числа относительно точки, разделяющей десятичные знаки, мы добавляем знак >(здесь его можно опустить, об этом чуть позже) и число, указывающее количество символов в представленных числах. Здесь мы ввели 5 (пятизначное число), поэтому если вы считаете, что какая-либо из заданных масс может иметь целую часть больше 2, вам следует задать большую длину:

print(f"""
Для массы раствора:             {m_rastvor:>5.2f}g
И массы растворенного вещества: {m_substance:>5.2f}g
Концентрация:                   {100*m_substance/m_rastvor:>5.2f}%
""")
Для массы раствора: 13.00g И массы растворенного вещества: 7.30g Концентрация:   56.15% 
Вопрос: Что произойдет, если мы удалим символы из приведенного выше примера \n?

Использование f-string-s не ограничивается прямым использованием в функции print(). Их можно использовать при создании переменных или непосредственном написании строк:

m_rastvor = 13
m_substance = 7.3
out = f"""
Для массы раствора:              {m_rastvor:.2f}g
И массы растворенного вещества:  {m_substance:.2f}g,
Концентрация:                    {100 * m_substance / m_rastvor:.2f}%
"""
print(out)
Для массы раствора: 13.00g
И массы растворенного вещества: 7.30g,
Концентрация: 56.15%

 


Подробнее о форматировании в F-строках Python

Выше, чтобы правильно отформатировать результат, мы использовали следующий код:

print(f'Для массы раствора:                 {m_rastvor:>5.2f}g')
Для массы раствора: 13.00g 

Давайте подробнее рассмотрим выражение: :>5.2f.

:— начальный символ, указывающий, что форматирование будет задано следующим.

>означает, что мы применим правильное выравнивание. Вы также можете использовать символы <– выравнивание по левому краю или ^– для обозначения выравнивания по центру.

  • Примечание. Это выравнивание чисел по умолчанию >, поэтому в приведенном выше примере вы могли бы опустить этот символ.

Далее следовали две цифры, разделенные точкой, обозначающие количество символов целого числа и десятичной части и fуказывающие, что это будет число с плавающей запятой .

Для целых чисел fмы будем использовать вместо d, для строк мы будем использовать s, а числа разделения, указанные ранее, .будут относиться к минимальному и максимальному количеству символов для печати строки, оба из которых являются необязательными. Буквы, обозначающие тип значения, обычно можно опустить, хотя иногда они могут быть важны для печати. Если вы печатаете число, вы можете добавить « » (пробел) после символа выравнивания. В этом случае перед отрицательными числами будет напечатан символ -, а перед положительными числами будет добавлен пробел. После символа «:» также можно добавить символ, который будет использоваться для заполнения пустых мест, по умолчанию это пробел.

Давайте посмотрим, как это работает на примерах:

kodon = "AUG"
print(f'Metionina:{kodon:<}')
Metionina:AUG
print(f'Metionina:{kodon:<9s}')
Metionina:AUG      
print(f'Metionina:{kodon:>9s}')
Metionina:      AUG
print(f'Metionina:{kodon:*>9s}')
Metionina:******AUG
print(f'Metionina:{kodon:*^9s}')
Metionina:***AUG***
print(f'Metionina:{kodon:*^9.9s}')
Metionina:***AUG***
print(f'Metionina:{kodon:*^5.9s}')
Metionina:*AUG*
print(f'Metionina:{kodon:*^.9s}')
Metionina:AUG
liczba1 = 10
liczba2 = -20
print(f'Liczba 1:{liczba1:*^5f}')
print(f'Liczba 1:{liczba1:*^5d}')
print(f'Liczba 2:{liczba2:*^5d}')
Liczba 1:10.000000
Liczba 1:*10**
Liczba 2:*-20*
print(f'Liczba 1:{liczba1:*>5d}')
print(f'Liczba 2:{liczba2:*>5d}')
Liczba 1:***10
Liczba 2:**-20
print(f'Liczba 1:{liczba1:<5d}')
print(f'Liczba 2:{liczba2:<5d}')
Liczba 1:10   
Liczba 2:-20  
print(f'Liczba 1:{liczba1:< 5d}')
print(f'Liczba 2:{liczba2:< 5d}')
Liczba 1: 10  
Liczba 2:-20 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.