Skip to content
Snippets Groups Projects
lecture_2.html 346 KiB
Newer Older
S.Guliaev's avatar
S.Guliaev committed
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&nbsp;[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="&#1058;&#1080;&#1087;-Decimal">&#1058;&#1080;&#1087; Decimal<a class="anchor-link" href="#&#1058;&#1080;&#1087;-Decimal">&#182;</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="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;-4.-&#1057;&#1090;&#1088;&#1086;&#1082;&#1080;">&#1056;&#1072;&#1079;&#1076;&#1077;&#1083; 4. &#1057;&#1090;&#1088;&#1086;&#1082;&#1080;<a class="anchor-link" href="#&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;-4.-&#1057;&#1090;&#1088;&#1086;&#1082;&#1080;">&#182;</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&nbsp;[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">&quot;&quot;&quot;Таким образом в Python создаются </span>
<span class="s2">литералы длинной в несколько строк, а таким </span><span class="se">\</span>
<span class="s2">образом экранируются символы перевода строки.&quot;&quot;&quot;</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&nbsp;[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">&quot;Это один из способов записать строковый литерал &quot;</span> <span class="o">+</span> \
     <span class="s2">&quot;в несколько строк при помощи конкатенации и экранирования перевода строки&quot;</span>

<span class="n">s2</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;Это второй способ записать строковый литерал в несколько строк &quot;</span>
      <span class="s2">&quot;при поомощи конкатенации строковых литералов внутри круглых скобок&quot;</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&nbsp;[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>
&#39;\u262d&#39;
</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="&#1057;&#1088;&#1072;&#1074;&#1085;&#1077;&#1085;&#1080;&#1077;-&#1089;&#1090;&#1088;&#1086;&#1082;">&#1057;&#1088;&#1072;&#1074;&#1085;&#1077;&#1085;&#1080;&#1077; &#1089;&#1090;&#1088;&#1086;&#1082;<a class="anchor-link" href="#&#1057;&#1088;&#1072;&#1074;&#1085;&#1077;&#1085;&#1080;&#1077;-&#1089;&#1090;&#1088;&#1086;&#1082;">&#182;</a></h4><p>Строки поддерживают обычные операторы сравнения: &lt;, &lt;=, ==, !=, &gt; и &gt;=. Эти операторы сравнивают строки байт за байтом. Таким образом, они выполняют сравнение в лексикограческом смысле.</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="&#1048;&#1079;&#1074;&#1083;&#1077;&#1095;&#1077;&#1085;&#1080;&#1103;-&#1089;&#1088;&#1077;&#1079;&#1072;-&#1089;&#1090;&#1088;&#1086;&#1082;-&#1089;-&#1096;&#1072;&#1075;&#1086;&#1084;-&#1080;-&#1073;&#1077;&#1079;">&#1048;&#1079;&#1074;&#1083;&#1077;&#1095;&#1077;&#1085;&#1080;&#1103; &#1089;&#1088;&#1077;&#1079;&#1072; &#1089;&#1090;&#1088;&#1086;&#1082; &#1089; &#1096;&#1072;&#1075;&#1086;&#1084; &#1080; &#1073;&#1077;&#1079;<a class="anchor-link" href="#&#1048;&#1079;&#1074;&#1083;&#1077;&#1095;&#1077;&#1085;&#1080;&#1103;-&#1089;&#1088;&#1077;&#1079;&#1072;-&#1089;&#1090;&#1088;&#1086;&#1082;-&#1089;-&#1096;&#1072;&#1075;&#1086;&#1084;-&#1080;-&#1073;&#1077;&#1079;">&#182;</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="&#1054;&#1087;&#1077;&#1088;&#1072;&#1090;&#1086;&#1088;&#1099;-&#1080;-&#1084;&#1077;&#1090;&#1086;&#1076;&#1099;-&#1076;&#1083;&#1103;-&#1088;&#1072;&#1073;&#1086;&#1090;&#1099;-&#1089;&#1086;-&#1089;&#1090;&#1088;&#1086;&#1082;&#1072;&#1084;&#1080;">&#1054;&#1087;&#1077;&#1088;&#1072;&#1090;&#1086;&#1088;&#1099; &#1080; &#1084;&#1077;&#1090;&#1086;&#1076;&#1099; &#1076;&#1083;&#1103; &#1088;&#1072;&#1073;&#1086;&#1090;&#1099; &#1089;&#1086; &#1089;&#1090;&#1088;&#1086;&#1082;&#1072;&#1084;&#1080;<a class="anchor-link" href="#&#1054;&#1087;&#1077;&#1088;&#1072;&#1090;&#1086;&#1088;&#1099;-&#1080;-&#1084;&#1077;&#1090;&#1086;&#1076;&#1099;-&#1076;&#1083;&#1103;-&#1088;&#1072;&#1073;&#1086;&#1090;&#1099;-&#1089;&#1086;-&#1089;&#1090;&#1088;&#1086;&#1082;&#1072;&#1084;&#1080;">&#182;</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="&#1052;&#1077;&#1090;&#1086;&#1076;-str.format()">&#1052;&#1077;&#1090;&#1086;&#1076; str.format()<a class="anchor-link" href="#&#1052;&#1077;&#1090;&#1086;&#1076;-str.format()">&#182;</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&nbsp;[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">&quot;</span><span class="si">{0}</span><span class="s2"> love </span><span class="si">{1}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">&quot;I&quot;</span><span class="p">,</span> <span class="s2">&quot;Python&quot;</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="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;-5.-&#1044;&#1086;&#1084;&#1072;&#1096;&#1085;&#1077;&#1077;-&#1079;&#1072;&#1076;&#1072;&#1085;&#1080;&#1077;">&#1056;&#1072;&#1079;&#1076;&#1077;&#1083; 5. &#1044;&#1086;&#1084;&#1072;&#1096;&#1085;&#1077;&#1077; &#1079;&#1072;&#1076;&#1072;&#1085;&#1080;&#1077;<a class="anchor-link" href="#&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;-5.-&#1044;&#1086;&#1084;&#1072;&#1096;&#1085;&#1077;&#1077;-&#1079;&#1072;&#1076;&#1072;&#1085;&#1080;&#1077;">&#182;</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>