Newer
Older
14001
14002
14003
14004
14005
14006
14007
14008
14009
14010
14011
14012
14013
14014
14015
14016
14017
14018
14019
14020
14021
14022
14023
14024
14025
14026
14027
14028
14029
14030
14031
14032
14033
14034
14035
14036
14037
14038
14039
14040
14041
14042
14043
14044
14045
14046
14047
14048
14049
14050
14051
14052
14053
14054
14055
14056
14057
14058
14059
14060
14061
14062
14063
14064
14065
14066
14067
14068
14069
14070
14071
14072
14073
14074
14075
14076
14077
14078
14079
14080
14081
14082
14083
14084
14085
14086
14087
14088
14089
14090
14091
14092
14093
14094
14095
14096
14097
14098
14099
14100
14101
14102
14103
14104
14105
14106
14107
14108
14109
14110
14111
14112
14113
14114
14115
14116
14117
14118
14119
14120
14121
14122
14123
14124
14125
14126
14127
14128
14129
14130
14131
14132
14133
14134
14135
14136
14137
14138
14139
14140
14141
14142
14143
14144
14145
14146
14147
14148
14149
14150
14151
14152
14153
14154
14155
14156
14157
14158
14159
14160
14161
14162
14163
14164
14165
14166
14167
14168
14169
14170
14171
14172
14173
14174
14175
14176
14177
14178
14179
14180
14181
14182
14183
14184
14185
14186
14187
14188
14189
14190
14191
14192
14193
14194
14195
14196
14197
14198
14199
14200
14201
14202
14203
14204
14205
14206
14207
14208
14209
14210
14211
14212
14213
14214
14215
14216
14217
14218
14219
14220
14221
14222
14223
14224
14225
14226
14227
14228
14229
14230
14231
14232
14233
14234
14235
14236
14237
14238
14239
14240
14241
14242
14243
14244
14245
14246
14247
14248
14249
14250
14251
14252
14253
14254
14255
14256
14257
14258
14259
14260
14261
14262
14263
14264
14265
14266
14267
14268
14269
14270
14271
14272
14273
14274
14275
14276
14277
14278
14279
14280
14281
14282
14283
14284
14285
14286
14287
14288
14289
14290
14291
14292
14293
14294
14295
14296
14297
14298
14299
14300
14301
14302
14303
14304
14305
14306
14307
14308
14309
14310
14311
14312
14313
14314
14315
14316
14317
14318
14319
14320
14321
14322
14323
14324
14325
14326
14327
14328
14329
14330
14331
14332
14333
14334
14335
14336
14337
14338
14339
14340
14341
14342
14343
14344
14345
14346
14347
14348
14349
14350
14351
14352
14353
14354
14355
14356
14357
14358
14359
14360
14361
14362
14363
14364
14365
14366
14367
14368
14369
14370
14371
14372
14373
14374
14375
14376
14377
14378
14379
14380
14381
14382
14383
14384
14385
14386
14387
14388
14389
14390
14391
14392
14393
14394
14395
14396
14397
14398
14399
14400
14401
14402
14403
14404
14405
14406
14407
14408
14409
14410
14411
14412
14413
14414
14415
14416
14417
14418
14419
14420
14421
14422
14423
14424
14425
14426
14427
14428
14429
14430
14431
14432
14433
14434
14435
14436
14437
14438
14439
14440
14441
14442
14443
14444
14445
14446
14447
14448
14449
14450
14451
14452
14453
14454
14455
14456
14457
14458
14459
14460
14461
14462
14463
14464
14465
14466
14467
14468
14469
14470
14471
14472
14473
14474
14475
14476
14477
14478
14479
14480
14481
14482
14483
14484
14485
14486
14487
14488
14489
14490
14491
14492
14493
14494
14495
14496
14497
14498
14499
14500
14501
14502
14503
14504
14505
14506
14507
14508
14509
14510
14511
14512
14513
14514
14515
14516
14517
14518
14519
14520
14521
14522
14523
<div class="input">
<div class="prompt input_prompt">In [9]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">z</span> <span class="o">=</span> <span class="o">-</span><span class="mf">1.5</span><span class="o">+</span><span class="mf">2.5</span><span class="n">j</span>
<span class="nb">print</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">z</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="n">z</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>(-1.5+2.5j)
-1.5 2.5
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Кроме //, %, divmod() и версии pow() с тремя аргументами, все операторы и функции для работы с числами дорступны и для типа complex. К тому же, для типа complex доступен метод conjugate(), который возвращает комплексно-сопряженное число.</p>
<p>Если тип complex вызывается как функция без аргументов, то будет получено число 0j. Если complex вызывается с аргументом типа complex, то будет получена его копия. Также может быть передан один аргумент строкового типа, который будет приведен к complex, либо два аргумента типа float: действительная и мнимая часть соответственно. В последнем случае мнимая часть будет принята равной 0j.</p>
<p>Функции модуля math не работают с типом complex. Для этого есть специальный модуль cmath, который содержит комплексные версии большинства тригонометрических и логарифмических функций модуля math, плюс специальные функции, специфичные для комплексных чисел, например, cmath.phase(), cmath.polar(), cmath.rect(), а также комплекные версии констант: cmath.pi, cmath.e.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="Тип-Decimal">Тип Decimal<a class="anchor-link" href="#Тип-Decimal">¶</a></h4><p>В некоторых приложениях важнее скорость вычислений, а не их точность, поэтому используется тип float для дробных чисел, который, хоть и подвержен не слишком большим ошибками вычислений, позволяет использовать крайне эффективные алогоритмы вычислений. В других случаях следует выбирать точность, а не скорость. Именно для таких ситуаций используется неизменяемый тип Decimal модуля decimal, который оперирует над дробными числами в десятичной системе счисления.</p>
<p>Числа этого типа могут быть созданы при помощи вызова decimal.Decimal(). Эта функция может принять аргумент типа int или строковый аргумент, но не число типа float. Для создания Decimal из float используется метод decimal.Decimal.from_float().</p>
<p>Все функции и операторы для работы с числами доступны для типа Decimal, с некоторыми ограничениями. Если мы возводим число типа Decimal в степень, то показатель должен быть целочисленным. Так, при вызове x ** y, если левый аргумент является числом типа Decimal, то правый аргумент должен быть типа int. То же и с вызовами pow(x, y) и pow(x, y, z): если x типа Decimal, то y и z должны быть типа int.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Раздел-4.-Строки">Раздел 4. Строки<a class="anchor-link" href="#Раздел-4.-Строки">¶</a></h3><p>Строки представлены неизменяемым типом str, который представляет собой последовательность символов Юникода. Тип str может быть вызван как функция для создания строковых объектов. В случае, если эта функция была вызвана без аргументов, будет создана пустая строка. В случае, если был передан аргумент типа str, будет создана копия этостроки. Для любого другого аргумента будет выполнено приведение к строковому типу. В последнем случае возможно передать два необязательных аргумента: кодировку и способ обработки ошибок кодировки.</p>
<p>В прошлой леции мы обратили внимание на то, что строковые литералы создаются при помощи кавычек. При этом, если нам необходимо создать литерал типа str в несколько строк, то используются тройные кавычки """:</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [10]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">text</span> <span class="o">=</span> <span class="s2">"""Таким образом в Python создаются </span>
<span class="s2">литералы длинной в несколько строк, а таким </span><span class="se">\</span>
<span class="s2">образом экранируются символы перевода строки."""</span>
<span class="nb">print</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Таким образом в Python создаются
литералы длинной в несколько строк, а таким образом экранируются символы перевода строки.
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Символ \ испольхуется для экранирования символов. Если вы хотите поместить сам символ \ в свою строку, то придется его экранировать: \. Это может быть неудобно, особенно для написания регулярных выражений, поэтому, если вы хотите, чтобы литерал интерпретировался буквально, т.е. никакие последовательности символов не приобразовывались, то перед кавычками, которые используются для его обозначения необходимо поставить символ r, как <code>r"в этой строке"</code>. Сами экранирующие последовательности (escape sequences) перечислены в таблице:</p>
<table>
<thead><tr>
<th>Последовательность</th>
<th style="text-align:left">Описание</th>
</tr>
</thead>
<tbody>
<tr>
<td>\<em>перевод строки</em></td>
<td style="text-align:left">Экранирование перевода строки</td>
</tr>
<tr>
<td>\\</td>
<td style="text-align:left">Обратный слэш</td>
</tr>
<tr>
<td>\'</td>
<td style="text-align:left">Одинарная кавычка</td>
</tr>
<tr>
<td>\"</td>
<td style="text-align:left">Двойная кавычка</td>
</tr>
<tr>
<td>\a</td>
<td style="text-align:left">Символ звонка ASCII</td>
</tr>
<tr>
<td>\b</td>
<td style="text-align:left">Символ backspace ASCII</td>
</tr>
<tr>
<td>\f</td>
<td style="text-align:left">Символ formfeed ASCII</td>
</tr>
<tr>
<td>\n</td>
<td style="text-align:left">Символ перевода строки ASCII</td>
</tr>
<tr>
<td>\N{<em>имя</em>}</td>
<td style="text-align:left">Символ Юникода с указаным именем</td>
</tr>
<tr>
<td>\ooo</td>
<td style="text-align:left">Символ с указанным восьмеричным значением</td>
</tr>
<tr>
<td>\r</td>
<td style="text-align:left">Символ возврата каретки ASCII</td>
</tr>
<tr>
<td>\t</td>
<td style="text-align:left">Символ табуляции ASCII</td>
</tr>
<tr>
<td>\uhhhh</td>
<td style="text-align:left">Символ Юникода с указанным 16-битным шестнадцатиричным значением</td>
</tr>
<tr>
<td>\Uhhhhhhhh</td>
<td style="text-align:left">Символ Юникода с указанным 32-битным шестнадцатиричным значением</td>
</tr>
<tr>
<td>\v</td>
<td style="text-align:left">Символ вертикальной табуляции ASCII</td>
</tr>
<tr>
<td>\xhh</td>
<td style="text-align:left">Символ с заданным 8-битным шестнадцатиричным значением</td>
</tr>
</tbody>
</table>
<p>Если вы хотите записать строковый литерал в несколько строк без использования тройных кавычек, то есть два основных метода:</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [11]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">s1</span> <span class="o">=</span> <span class="s2">"Это один из способов записать строковый литерал "</span> <span class="o">+</span> \
<span class="s2">"в несколько строк при помощи конкатенации и экранирования перевода строки"</span>
<span class="n">s2</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"Это второй способ записать строковый литерал в несколько строк "</span>
<span class="s2">"при поомощи конкатенации строковых литералов внутри круглых скобок"</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">s1</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">s2</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Это один из способов записать строковый литерал в несколько строк при помощи конкатенации и экранирования перевода строки
Это второй способ записать строковый литерал в несколько строк при поомощи конкатенации строковых литералов внутри круглых скобок
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Рекомендуется всегда в данной ситуации использовать второй способ для избежания ошибок связанных с отсутствием экранирования символа перевода строки.</p>
<p>По умолчанию в .py файлах используется кодировка UTF-8, что позволяет использовать любой символ Юникода (см. предыдущую лекцию).</p>
<p>Для получения символа Юникода по его коду используется встроенная функция chr(). Для представления любой последовательности символов в формате ASCII используется встроенная функция ascii().</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [12]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">s</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mh">0x262D</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">ascii</span><span class="p">(</span><span class="n">s</span><span class="p">))</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>☭
'\u262d'
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="Сравнение-строк">Сравнение строк<a class="anchor-link" href="#Сравнение-строк">¶</a></h4><p>Строки поддерживают обычные операторы сравнения: <, <=, ==, !=, > и >=. Эти операторы сравнивают строки байт за байтом. Таким образом, они выполняют сравнение в лексикограческом смысле.</p>
<p>В подобном подходе существуют две проблемы, не уникальные для Python, но связанные со способом кодировки символов в Юникоде. Первая проблема заключается в том, что один и тот же символ может быть представлен несколькими последовательностями байтов. Эта проблема частично решается при помощи нормализации функцией normalize() модуля unicodedata. Вторая проблема связана с тем, что некоторые символы в разных языках стоят на разных позициях в алфавите.</p>
<p>Сама проблема подробно обсуждается <a href="unicode.org/reports/tr10">здесь</a>. Мы лишь заметим, что для строк, состоящих из английских букв данные операторы сравнения корректны.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="Извлечения-среза-строк-с-шагом-и-без">Извлечения среза строк с шагом и без<a class="anchor-link" href="#Извлечения-среза-строк-с-шагом-и-без">¶</a></h4><p>Операция извлечения среза доступна для любых встроенных типов последовательностей, в том числе и для строк и имеет три возможные формы:</p>
<ul>
<li><p><em>последовательность</em>[начальный_индекс]</p>
</li>
<li><p><em>последовательность</em>[начальный_индекс:конечный_индекс]</p>
</li>
<li><p><em>последовательность</em>[начальный_индекс:конечный_индекс:шаг]</p>
</li>
</ul>
<p>Первый вариант выбирает один элемент с индексом <em>начальный_индекс</em>. Второй вариант выбирает все элементы с индексами от <em>начальный_индекс</em> включительно до <em>конченый_индекс</em>, не включая его. Третий вариант делает то же, что и второй, но если, скажем, <em>шаг</em> будет равен 2, то будет выбран каждый второй элемент, если 3 - каждый третий, и так далее. Важно, что первый элемент всегда попадет в полученный срез, а вот последний элемент в срезе может меняться в зависимости от шага среза.</p>
<p>Любой из трех аргументов в срезе может быть пропущен. По умолчанию <em>начальный_индекс</em> равен 0, <em>конечный/_индекс</em> равен длине последовательности, а <em>шаг</em> равен 1.</p>
<p>В качестве индексов в срезе можно указывать отрицательные числа, тогда индекс будет отсчитываться с конца. Также можно указать отрицательный шаг, тогда срез будет взят в обратом направлении. Например, если опустить первые два аргумента, а указать только шаг, равный -1, то мы получим исходную строку в обратном порядке.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="Операторы-и-методы-для-работы-со-строками">Операторы и методы для работы со строками<a class="anchor-link" href="#Операторы-и-методы-для-работы-со-строками">¶</a></h4><p>Строки являются неизменяемыми последовательностями, что означает, что функции и операторы для работы с неизменяемыми последовательностями доступны и для строк. Например, оператор конкатенации +, повторения *, также их варианты, комбинированные с оператором присваивания. Также, встроенная функция reversed() вернет ту же строку, но в обратном порядке.</p>
<p>Встроенные методы для работы со строками:</p>
<table>
<thead><tr>
<th>Метод</th>
<th style="text-align:left">Описание</th>
</tr>
</thead>
<tbody>
<tr>
<td>s.capitalize()</td>
<td style="text-align:left">Приводит первый символ строки s к верхнему регистру</td>
</tr>
<tr>
<td>s.center(width, char)</td>
<td style="text-align:left">Возвращает копию строки s, приведенную к нужной ширине width путем дополнения поровну слева и справа символом char. Если char не указан, то дополнение идет при помощи пробела</td>
</tr>
<tr>
<td>s.count(t, start, end)</td>
<td style="text-align:left">Считает число вхождений подстроки t в строку s (если указаны start и end, то в срез строки s[start:end]</td>
</tr>
<tr>
<td>s.encode(encoding, err)</td>
<td style="text-align:left">Возвращает объект класса bytes, представляющий закодированную строку s в стандартной кодировке или в кодировке encoding, если она указана. Обработка ошибок происходит в соответствии с err</td>
</tr>
<tr>
<td>s.endswith(x, start, end)</td>
<td style="text-align:left">Проверяет, заканчивается ли строка s подстрокой x или любой из строк в кортеже x. Если указаны start и end, то проверка выполняется в подстроке s[start:end]</td>
</tr>
<tr>
<td>s.expandtabs(size)</td>
<td style="text-align:left">Возвращает строку, в которой каждый символ табуляции заменяется на 8 пробелов или на size пробелов, если данный аргумент указан</td>
</tr>
<tr>
<td>s.find(t, start, end)</td>
<td style="text-align:left">Возвращает индекс самого левого вхождения подстроки t в строку s. Если подстрока t не входит в строку s, то возвращается -1. Если start и end указаны, то поиск выполняется в подстроке s[start:end]</td>
</tr>
<tr>
<td>s.format(...)</td>
<td style="text-align:left">Специальный метод формата, рассмотрен позже отдельно</td>
</tr>
<tr>
<td>s.index(t, start, end)</td>
<td style="text-align:left">Аналогичен s.find(), но возбуждает исключение <code>ValueError</code>, если элемент не найден</td>
</tr>
<tr>
<td>s.isalnum()</td>
<td style="text-align:left">Возвращает True, если строка s непуста и каждый символ в ней - буква или цифра</td>
</tr>
<tr>
<td>s.isalpha()</td>
<td style="text-align:left">Возвращает True, если строка s непуста и каждый символ в ней - буква</td>
</tr>
<tr>
<td>s.isdecimal()</td>
<td style="text-align:left">Возвращает True, если строка s непуста и каждый символ в ней соответствует символу цифры в системе счисления с основанием 10 в Юникоде</td>
</tr>
<tr>
<td>s.isdigit()</td>
<td style="text-align:left">Возвращает True, если строка s непуста и каждый символ в ней соответствует символу цифры в системе счисления с основанием 10 в ASCII</td>
</tr>
<tr>
<td>s.isidentifier()</td>
<td style="text-align:left">Возвращает True, если строка является валидным идентификатором в Python</td>
</tr>
<tr>
<td>s.islower()</td>
<td style="text-align:left">Возвращает True, если в строке s есть хотя бы один символ, доступный в нижнем регистре, и все символы, доступные в нижнем регистре, находятся в нижнем регистре</td>
</tr>
<tr>
<td>s.isnumeric()</td>
<td style="text-align:left">Возвращает True, если строка s непуста и каждый ее символ соответствует численному символу Юникода</td>
</tr>
<tr>
<td>s.isprintable()</td>
<td style="text-align:left">Возвращет True, если строка s пуста или строка содержит только печатаемые символы (включая пробел, но не включая перевод строки)</td>
</tr>
<tr>
<td>s.isspace()</td>
<td style="text-align:left">Возвращает True, если строка s непуста и каждый ее символ - пробельный</td>
</tr>
<tr>
<td>s.istitle()</td>
<td style="text-align:left">Возвращает True если каждый первый символ каждого слова в строке приведен к верхнему регистру, а все остальные символы - к нижнему</td>
</tr>
<tr>
<td>s.isupper()</td>
<td style="text-align:left">Возвращает True, если в строке s есть хотя бы один символ, доступный в верхнем регистре, и все символы, доступные в верхнем регистре, находятся в верхнем регистре</td>
</tr>
<tr>
<td>s.join(seq)</td>
<td style="text-align:left">Возвращает конкатенацию всех элементов последовательности seq, приведенных к строками. При этом между каждыми двумя элементами ставится строка s (может быть пустой)</td>
</tr>
<tr>
<td>s.ljust(width, char)</td>
<td style="text-align:left">Возвращает копию строки s, приведенную к нужной ширине width путем дополнения справа символом char. Если char не указан, то дополнение идет при помощи пробела</td>
</tr>
<tr>
<td>s.lower()</td>
<td style="text-align:left">Возвращает копию строки s, в которой все символы, для которых это возможно, приведены к нижнему регистру</td>
</tr>
<tr>
<td>s.maketrans()</td>
<td style="text-align:left">Создает таблицу для отображения символов</td>
</tr>
<tr>
<td>s.partition(t)</td>
<td style="text-align:left">Если подстрока t входит в строку s, то вернет три строки: все, что находится до самого левого вхождения t, t, все, что находится после самого левого вхождения t. В противном случае вернет s и две пустых строки</td>
</tr>
<tr>
<td>s.replace(t, u, n)</td>
<td style="text-align:left">Заменяет не более n вхождений подстроки t в строку s строкой u</td>
</tr>
<tr>
<td>s.split(t, n)</td>
<td style="text-align:left">Возвращает список, полученный делением строки s не более n раз. Деление происходит по подстроке t. Если t не указано, то используется пробел</td>
</tr>
<tr>
<td>s.splitlines(f)</td>
<td style="text-align:left">Возвращает список, полученный делением строки s по символу перевода строки. Символы перевода строки при этом исключаются, если только не задан аргумент True</td>
</tr>
<tr>
<td>s.stratswidth(x, start, end)</td>
<td style="text-align:left">Возвращает True, если строка s начинается с подстроки str(x). Есои start и end указаны, то проверка выполняется в срезе s[start:end]</td>
</tr>
<tr>
<td>s.strip(chars)</td>
<td style="text-align:left">Возвращает копию строки s с удаленными слева и справа символами из строки chars. s.lstrip() удаляет символы только слева, а s.rstrip() только справа. Если chars не указан, то удаляются пробелы</td>
</tr>
<tr>
<td>s.swapcase()</td>
<td style="text-align:left">Возвращает копию строки s, в которой все символы в верхнем регистре переведены в нижний, а все символы в нижнем регистре переведены в верхний</td>
</tr>
<tr>
<td>s.title()</td>
<td style="text-align:left">Возвращает копию строки s, в которой первая буква каждого слова стоит в верхнем регистре, а все остальные символы - в нижнем</td>
</tr>
<tr>
<td>s.translate()</td>
<td style="text-align:left">Возвращает копию строки s, совершив отображение символов в соответствии с переданной таблицей</td>
</tr>
<tr>
<td>s.upper()</td>
<td style="text-align:left">Возвращает копию строки s, в которой все символы, для которых это возможно, приведены к верхнему регистру</td>
</tr>
<tr>
<td>s.zfill(w)</td>
<td style="text-align:left">Возвращает копию строки s, которая, если строка s в длину не превышает w, дополнена лидирующими нулями до w символов</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="Метод-str.format()">Метод str.format()<a class="anchor-link" href="#Метод-str.format()">¶</a></h4><p>Метод format вызывается от строки формата, которая имеет специальный вид, а в качестве аргумента ей передаются объекты, которые будут приведены к строкам и вставлены в результирующую строку:</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [13]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">{0}</span><span class="s2"> love </span><span class="si">{1}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">"I"</span><span class="p">,</span> <span class="s2">"Python"</span><span class="p">))</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>I love Python
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Если вы хотите использовать фигурные скобки буквально в строке формата, то укажите их дважды. Внутри фигурных скобок можно указывать индексы аргументов, котоыре будут вставляться, а также их имена, если они указаны в списке аргументов. Для данных аргументов можно производить операцию извлечения элемента по индексу или получения значения по ключу. После индекса или имени аргумента может идти двоеточие, а за ним спецификации формата: символ для заполнения, способ выравнивания, знак, способ записи числа, выравнивание чисел нулями, ширина, группирование цифр, точность и тип.</p>
<p>Более подробно строки формата смотри в Саммерфилде.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Раздел-5.-Домашнее-задание">Раздел 5. Домашнее задание<a class="anchor-link" href="#Раздел-5.-Домашнее-задание">¶</a></h3><ul>
<li><p>Все задачи после второй главы Саммерфилда</p>
</li>
<li><p>Доработать игру "Быки и Коровы", сделав в ней два режима: в одном из них число загадывает игрок, а во втором - компьютер</p>
</li>
<li><p>В субботу жди новую задачу</p>
</li>
<li><p>Поискать в интернете про: про методы кодирования символов, Big-endian, Little-endian, ASCII, числа с плавающей точкой одинарной и двойной точности, гиперболические функции.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</body>
</html>