July 3

ачто строки умеют в питоне

вообще ниче они не умеют, всем пока!

Ладно шучу, они и в самом то деле ничего не умеют, но мы можем научится делать с ними движения. Кхм-кхм, а что такое строки?

Строка(str) - это последовательность символов. Можно думать о ней как о списке букв, цифр и прочих знаков.

Создать строку просто:

text = "ляляля я семен лобанов"  

Или так:

text = 'можно и в одинарных кавычках'  

Что можно делать со строками?

Складывать (конкатенация)

hello = "Привет, "  
name = "Кодер!"  
greeting = hello + name  # "Привет, Кодер!"  

Умножать (повторение)

laugh = "ха" * 3  # "хахаха" 

Делить (срезы)
Строки можно резать как колбасу:

text = "Python"  
print(text[0])    # 'P'  
print(text[1:4])  # 'yth'  
print(text[-1])   # 'n' (последний символ)  

Искать подстроки

if "Привет" in "Привет, мир!":  
    print("Нашел!")  

Форматировать (f-строки)
Самый удобный способ впихнуть переменные в текст:

name = "Вася"  
age = 25  
print(f"{name} - {age} лет")  # "Вася - 25 лет"

У строк куча методов для работы:

ДОЛБАНОЕ ФОРМАТИРОВАНИЕ или что это за проценты такие

Как работает %-форматирование?

Синтаксис:

"Шаблон строки" % (значения)  

пример

name = "Вася"  
age = 30  
text = "Меня зовут %s, мне %d лет." % (name, age)  
print(text)  

Вывод: Меня зовут Вася, мне 30 лет.

Что значат %s, %d и другие спецификаторы?

вот тебе табличка:

ПРИМЕРЫ

user = "admin"  
print("Логин: %s" % user)  # Логин: admin 

name = "Олег"  
balance = 100.50  
print("Клиент: %s, баланс: $%.2f" % (name, balance)) #Клиент: Олег, баланс: $100.50

pi = 3.14159265
print("Число Пи: %.3f" % pi)  # Число Пи: 3.142  

почему строка это не список?

Строка — неизменяемый тип данных. То есть нельзя взять и поменять один символ внутри нее.

Давай поговорим сначала о том, что можно делать и со списками, и со строками

Обращение по индексу

text = "Hello"  
lst = [1, 2, 3]  

print(text[0])  # 'H'  
print(lst[0])   # 1  

Срезы (slicing)

print(text[1:4])  # 'ell'  
print(lst[1:3])   # [2, 3]  

Длина (len())

print(len(text))  # 5  
print(len(lst))   # 3  

Итерация (for)

for char in text:  
    print(char)  # H, e, l, l, o  

for num in lst:  
    print(num)   # 1, 2, 3  

Конкатенация (+)

new_text = text + " world"  # "Hello world"  
new_list = lst + [4, 5]     # [1, 2, 3, 4, 5]  

Повторение (*)

print(text * 2)  # "HelloHello"  
print(lst * 2)   # [1, 2, 3, 1, 2, 3]  

Что можно делать ТОЛЬКО со списками:

Изменение элементов

lst = [1, 2, 3]  
lst[0] = 99  # [99, 2, 3]  

text = "abc"  
text[0] = "x"  # Ошибка! TypeError: 'str' does not support item assignment  

Добавление элементов

lst.append(4)  # [1, 2, 3, 4]  
lst.extend([5, 6])  # [1, 2, 3, 4, 5, 6]  

Удаление элементов

del lst[0]  # [2, 3]  
lst.remove(2)  # [3]  

Сортировка и реверс

lst.sort()  # Сортирует список  
lst.reverse()  # Разворачивает список  

Вставка элементов

lst.insert(1, "new")  # [1, "new", 2, 3]  

ПОМНИМ, ЧТО СТРОКА ЭТО НЕИЗМЕНЯЕМЫЙ ТИП ДАННЫХ. А это значит, что во время исполнения нашей программы мы НЕ можем добавить оттуда букву или убрать при помощи специальных методов.

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

text = "Кот"  
text[0] = "Р"  # Ошибка! TypeError  

Так низя делать!!! Но можно сделать так:

text = "Р" + text[1:]  # "Рот"  

То есть мы просто перезаписали уже существующую переменную и все :)

Есть еще методы, которые используются ТОЛЬКО для строк, но это те методы, которые я описал выше, например, Строковые методы (.upper(), .split(), .replace() и др.). Списки нельзя форматировать используя %-форматирование.