|
| 1 | +# Лекция 3: Списки, Строки как Коллекции, Срезы Строк и Списков, методы строк, Циклы `for` и `while`. |
| 2 | + |
| 3 | +## 1. Списки (Lists) |
| 4 | + |
| 5 | +Список - это упорядоченная коллекция элементов, которая может содержать объекты разных типов. Они очень полезны при работе с множеством данных. |
| 6 | + |
| 7 | +### Создание списков |
| 8 | + |
| 9 | +Создать список можно, заключив элементы в квадратные скобки `[]` и разделив их запятыми. |
| 10 | + |
| 11 | +```python |
| 12 | +fruits = ['яблоко', 'банан', 'груша', 'апельсин'] |
| 13 | +numbers = [1, 2, 3, 4, 5] |
| 14 | +mixed_list = [1, 'два', 3.0, True] |
| 15 | +``` |
| 16 | + |
| 17 | +### Доступ к элементам списка |
| 18 | + |
| 19 | +Чтобы получить доступ к элементам списка, используйте индексацию, начиная с 0. |
| 20 | + |
| 21 | +```python |
| 22 | +print(fruits[0]) # Вывод: 'яблоко' |
| 23 | +print(numbers[2]) # Вывод: 3 |
| 24 | +``` |
| 25 | + |
| 26 | +### Изменение элементов списка |
| 27 | + |
| 28 | +Списки являются изменяемыми, поэтому вы можете изменять их элементы. |
| 29 | + |
| 30 | +```python |
| 31 | +fruits[1] = 'киви' |
| 32 | +print(fruits) # Вывод: ['яблоко', 'киви', 'груша', 'апельсин'] |
| 33 | +``` |
| 34 | + |
| 35 | +### Добавление и удаление элементов |
| 36 | + |
| 37 | +Чтобы добавить элемент в конец списка, используйте метод `append()`. |
| 38 | + |
| 39 | +```python |
| 40 | +fruits.append('ананас') |
| 41 | +print(fruits) # Вывод: ['яблоко', 'киви', 'груша', 'апельсин', 'ананас'] |
| 42 | +``` |
| 43 | + |
| 44 | +Чтобы удалить элемент по индексу, используйте `del`. |
| 45 | + |
| 46 | +```python |
| 47 | +del fruits[2] |
| 48 | +print(fruits) # Вывод: ['яблоко', 'киви', 'апельсин', 'ананас'] |
| 49 | +``` |
| 50 | + |
| 51 | +## 2. Строки как Коллекции (Strings as Collections) |
| 52 | + |
| 53 | +Строки в Python также можно рассматривать как коллекции символов. |
| 54 | + |
| 55 | +### Доступ к символам строки |
| 56 | + |
| 57 | +Для доступа к символам строки используйте индексацию, так же как и для списков. |
| 58 | + |
| 59 | +```python |
| 60 | +text = "Hello, World!" |
| 61 | +print(text[0]) # Вывод: 'H' |
| 62 | +``` |
| 63 | + |
| 64 | +### Срезы строк (String Slicing) |
| 65 | + |
| 66 | +Срезы позволяют получать подстроки из строки. Синтаксис среза: `строка[начало:конец:шаг]`. |
| 67 | + |
| 68 | +```python |
| 69 | +substring = text[0:5] # Получение подстроки "Hello" |
| 70 | +print(substring) # Вывод: 'Hello' |
| 71 | + |
| 72 | +substring = text[7:] # Получение подстроки с 7-го символа до конца |
| 73 | +print(substring) # Вывод: 'World!' |
| 74 | + |
| 75 | +substring = text[:5] # Получение подстроки с начала до 5-го символа |
| 76 | +print(substring) # Вывод: 'Hello' |
| 77 | + |
| 78 | +substring = text[::2] # Получение каждого второго символа |
| 79 | +print(substring) # Вывод: 'Hlo ol!' |
| 80 | +``` |
| 81 | + |
| 82 | +## 3. Циклы `for` и `while` |
| 83 | + |
| 84 | +Циклы позволяют выполнять повторяющиеся операции. |
| 85 | + |
| 86 | +### Цикл `for` |
| 87 | + |
| 88 | +Цикл `for` используется для итерации по коллекциям, таким как списки и строки. |
| 89 | + |
| 90 | +```python |
| 91 | +fruits = ['яблоко', 'киви', 'груша', 'апельсин'] |
| 92 | + |
| 93 | +for fruit in fruits: |
| 94 | + print(fruit) |
| 95 | +``` |
| 96 | + |
| 97 | +### Цикл `while` |
| 98 | + |
| 99 | +Цикл `while` выполняется до тех пор, пока условие истинно. |
| 100 | + |
| 101 | +```python |
| 102 | +count = 0 |
| 103 | + |
| 104 | +while count < 5: |
| 105 | + print(count) |
| 106 | + count += 1 |
| 107 | +``` |
| 108 | + |
| 109 | +### Ключевое слово `break` |
| 110 | + |
| 111 | +`break` используется для выхода из цикла досрочно, даже если условие цикла остается истинным. Обычно `break` используется внутри условия, чтобы определить момент завершения цикла. |
| 112 | + |
| 113 | +Пример с циклом `while`: |
| 114 | + |
| 115 | +```python |
| 116 | +count = 0 |
| 117 | + |
| 118 | +while count < 5: |
| 119 | + if count == 3: |
| 120 | + break # Выход из цикла, если count равно 3 |
| 121 | + print(count) |
| 122 | + count += 1 |
| 123 | +``` |
| 124 | + |
| 125 | +Пример с циклом `for`: |
| 126 | + |
| 127 | +```python |
| 128 | +fruits = ['яблоко', 'киви', 'груша', 'апельсин'] |
| 129 | + |
| 130 | +for fruit in fruits: |
| 131 | + if fruit == 'груша': |
| 132 | + break # Выход из цикла при нахождении 'груши' |
| 133 | + print(fruit) |
| 134 | +``` |
| 135 | + |
| 136 | +### Ключевое слово `continue` |
| 137 | + |
| 138 | +`continue` используется для перехода к следующей итерации цикла, игнорируя оставшуюся часть текущей итерации. Обычно `continue` используется внутри условия для пропуска определенных действий. |
| 139 | + |
| 140 | +Пример с циклом `while`: |
| 141 | + |
| 142 | +```python |
| 143 | +count = 0 |
| 144 | + |
| 145 | +while count < 5: |
| 146 | + count += 1 |
| 147 | + if count == 3: |
| 148 | + continue # Пропустить вывод числа 3 |
| 149 | + print(count) |
| 150 | +``` |
| 151 | + |
| 152 | +Пример с циклом `for`: |
| 153 | + |
| 154 | +```python |
| 155 | +fruits = ['яблоко', 'киви', 'груша', 'апельсин'] |
| 156 | + |
| 157 | +for fruit in fruits: |
| 158 | + if fruit == 'груша': |
| 159 | + continue # Пропустить вывод 'груши' |
| 160 | + print(fruit) |
| 161 | +``` |
| 162 | + |
| 163 | +Ключевые слова `break` и `continue` полезны при создании более сложной логики в циклах и позволяют управлять потоком выполнения программы в более гибком стиле. |
| 164 | + |
| 165 | +Это основы работы с ключевыми словами `break` и `continue` в Python, списками, строками, срезами и циклами. Надеюсь, что эта лекция помогла вам лучше понять эти концепции и как их использовать в вашем коде. Удачи в изучении Python и разработке! |
| 166 | + |
| 167 | + |
| 168 | +### Бесконечные циклы |
| 169 | + |
| 170 | +Иногда может потребоваться создать бесконечный цикл, который будет выполняться до тех пор, пока его не прервут. Для этого используется конструкция `while True`. |
| 171 | + |
| 172 | +```python |
| 173 | +while True: |
| 174 | + # Этот цикл будет выполняться бесконечно |
| 175 | + user_input = input("Введите что-нибудь (для выхода наберите 'q'): ") |
| 176 | + if user_input == 'q': |
| 177 | + break # Выход из цикла при вводе 'q' |
| 178 | +``` |
| 179 | + |
| 180 | +Бесконечные циклы могут быть полезными в тех случаях, когда нужно создать программу, которая работает в фоновом режиме и ожидает какого-либо события, либо когда нужно регулярно выполнять какую-то задачу, например, мониторинг сенсоров или сетевых подключений. |
| 181 | + |
| 182 | +Не забывайте, что бесконечные циклы должны иметь какой-то механизм для прерывания, иначе программа будет выполняться бесконечно и может привести к зависанию. |
| 183 | + |
| 184 | +Практика: |
| 185 | + |
| 186 | +1. Создайте список numbers с числами от 1 до 10. Используя цикл for, выведите каждое число из списка numbers, возведенное в квадрат. Используя цикл for, найдите сумму всех чисел в списке numbers. |
| 187 | +2. Создайте строку text с произвольным текстом. Используя цикл for, выведите каждый символ из строки text. Используя срезы, выведите первые 5 символов и последние 5 символов из строки text. |
| 188 | +3. Создайте список чисел от 1 до 20. Используя цикл for, выведите все числа из списка, которые делятся на 3 без остатка. Используя цикл while, найдите сумму всех чисел от 1 до 100. Создайте бесконечный цикл с использованием while True, который будет предлагать пользователю ввод числа и выводить квадрат этого числа. Добавьте условие для выхода из цикла при вводе значения "0" или "exit". |
| 189 | +4. Создайте список слов words, включая некоторые повторяющиеся слова. Используя цикл for, выведите все уникальные слова из списка. |
| 190 | + |
| 191 | + |
| 192 | +## Полезные методы строк |
| 193 | + |
| 194 | +### Длина строки |
| 195 | + |
| 196 | +Для определения длины строки используйте функцию `len()`. |
| 197 | + |
| 198 | +```python |
| 199 | +text = "Привет, мир!" |
| 200 | +length = len(text) # Длина строки: 12 |
| 201 | +``` |
| 202 | + |
| 203 | +### Конкатенация строк |
| 204 | + |
| 205 | +Для объединения (конкатенации) строк используйте оператор `+`. |
| 206 | + |
| 207 | +```python |
| 208 | +str1 = "Hello" |
| 209 | +str2 = "World" |
| 210 | +result = str1 + ", " + str2 # Результат: "Hello, World" |
| 211 | +``` |
| 212 | + |
| 213 | +### Умножение строк |
| 214 | + |
| 215 | +Вы можете умножить строку на число, чтобы повторить ее несколько раз. |
| 216 | + |
| 217 | +```python |
| 218 | +text = "Привет" |
| 219 | +result = text * 3 # Результат: "ПриветПриветПривет" |
| 220 | +``` |
| 221 | + |
| 222 | +## Методы строк |
| 223 | + |
| 224 | +Python предоставляет множество методов для работы с строками. Ниже представлены некоторые из наиболее часто используемых методов. |
| 225 | + |
| 226 | +### `str.upper()` и `str.lower()` |
| 227 | + |
| 228 | +Метод `upper()` преобразует все символы строки в верхний регистр, а `lower()` - в нижний. |
| 229 | + |
| 230 | +```python |
| 231 | +text = "Привет, мир!" |
| 232 | +uppercase = text.upper() # Результат: "ПРИВЕТ, МИР!" |
| 233 | +lowercase = text.lower() # Результат: "привет, мир!" |
| 234 | +``` |
| 235 | + |
| 236 | +### `str.strip()` |
| 237 | + |
| 238 | +Метод `strip()` удаляет пробелы и символы перевода строки с начала и конца строки. |
| 239 | + |
| 240 | +```python |
| 241 | +text = " Текст с лишними пробелами " |
| 242 | +stripped_text = text.strip() # Результат: "Текст с лишними пробелами" |
| 243 | +``` |
| 244 | + |
| 245 | +### `str.split()` |
| 246 | + |
| 247 | +Метод `split()` разбивает строку на список подстрок, используя разделитель. |
| 248 | + |
| 249 | +```python |
| 250 | +text = "Яблоки, Груши, Бананы" |
| 251 | +fruits = text.split(", ") # Результат: ['Яблоки', 'Груши', 'Бананы'] |
| 252 | +``` |
| 253 | + |
| 254 | +### `str.replace()` |
| 255 | + |
| 256 | +Метод `replace()` заменяет все вхождения подстроки на другую подстроку. |
| 257 | + |
| 258 | +```python |
| 259 | +text = "Привет, мир!" |
| 260 | +new_text = text.replace("мир", "вселенная") # Результат: "Привет, вселенная!" |
| 261 | +``` |
| 262 | + |
| 263 | +### `str.find()` и `str.index()` |
| 264 | + |
| 265 | +Методы `find()` и `index()` находят первое вхождение подстроки в строку и возвращают индекс этого вхождения. Разница между ними в том, что `find()` возвращает -1, если подстрока не найдена, а `index()` вызывает исключение. |
| 266 | + |
| 267 | +```python |
| 268 | +text = "Это пример текста с примерами" |
| 269 | +index1 = text.find("пример") # Результат: 4 |
| 270 | +index2 = text.index("пример") # Результат: 4 |
| 271 | +index3 = text.find("нет") # Результат: -1 |
| 272 | +# index4 = text.index("нет") # Вызовет ValueError |
| 273 | +``` |
| 274 | + |
| 275 | +### `str.count()` |
| 276 | + |
| 277 | +Метод `count()` подсчитывает количество вхождений подстроки в строку. |
| 278 | + |
| 279 | +```python |
| 280 | +text = "Это пример текста с примерами" |
| 281 | +count = text.count("пример") # Результат: 2 |
| 282 | +``` |
| 283 | + |
| 284 | +### `str.startswith()` и `str.endswith()` |
| 285 | + |
| 286 | +Методы `startswith()` и `endswith()` проверяют, начинается ли строка с указанной подстроки или заканчивается ей. |
| 287 | + |
| 288 | +```python |
| 289 | +text = "Это пример текста" |
| 290 | +starts_with = text.startswith("Это") # Результат: True |
| 291 | +ends_with = text.endswith("текста") # Результат: True |
| 292 | +``` |
| 293 | + |
| 294 | +### `str.join()` |
| 295 | + |
| 296 | +Метод `join()` объединяет список строк с помощью текущей строки в качестве разделителя. |
| 297 | + |
| 298 | +```python |
| 299 | +fruits = ['Яблоки', 'Груши', 'Бананы'] |
| 300 | +text = ', '.join(fruits) # Результат: "Яблоки, Груши, Бананы" |
| 301 | +``` |
| 302 | + |
| 303 | +## Форматирование строк |
| 304 | + |
| 305 | +Python также предоставляет мощные инструменты для форматирования строк. Один из способов - это использование метода `str.format()`. |
| 306 | + |
| 307 | +```python |
| 308 | +name = "Иван" |
| 309 | +age = 30 |
| 310 | +text = "Привет, меня зовут {} и мне {} лет.".format(name, age) |
| 311 | +# Результат: "Привет, меня зовут Иван и мне 30 лет." |
| 312 | +``` |
| 313 | + |
| 314 | +### F-строки |
| 315 | + |
| 316 | +Python 3.6 и выше поддерживают f-строки (f-strings), которые представляют собой удобный способ вставки переменных и выражений в строки. |
| 317 | + |
| 318 | +```python |
| 319 | +name = "Иван" |
| 320 | +age = 30 |
| 321 | +text = f"Привет, меня зовут {name} и мне {age} лет." |
| 322 | +# Результат: " |
| 323 | + |
| 324 | +Привет, меня зовут Иван и мне 30 лет." |
| 325 | +``` |
| 326 | + |
| 327 | +F-строки начинаются с буквы `f` перед открывающей кавычкой, и в фигурных скобках `{}` можно вставлять переменные или выражения, которые будут вычислены и подставлены в строку. |
| 328 | + |
| 329 | +Практика: |
| 330 | + |
| 331 | +1. Подсчет гласных букв: Попросите пользователя ввести строку текста, а затем используйте методы строк для подсчета количества гласных букв (а, е, и, о, у) в этой строке. |
| 332 | + |
| 333 | +2. Замена слов: Создайте строку, содержащую предложение, и попросите пользователя ввести слово. Затем замените все вхождения этого слова в предложении на слово "заменено". Выведите измененное предложение. |
| 334 | + |
| 335 | +3. Создайте список с повторяющимися элементами. Используйте методы списков для удаления дубликатов и выведите измененный список. |
0 commit comments