Skip to content

Instantly share code, notes, and snippets.

@allatambov
Created April 5, 2018 11:45
Show Gist options
  • Save allatambov/ef2c077d66a60157a95eee2c7a849b5f to your computer and use it in GitHub Desktop.
Save allatambov/ef2c077d66a60157a95eee2c7a849b5f to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Основы программирования в Python\n",
"\n",
"*Алла Тамбовцева, НИУ ВШЭ*\n",
"\n",
"*Данный ноутбук основан на [лекции](http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%201.ipynb) Щурова И.В., [курс](http://math-info.hse.ru/s15/m) «Программирование на языке Python для сбора и анализа данных» (НИУ ВШЭ).*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Python как калькулятор, переменные и типы переменных"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Python как калькулятор"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Привычные арифметические действия (сложение, вычитание, умножение, деление) в Python выглядят так же, как и в обычных калькуляторах:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"1 + 2 # сложение"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-1"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"2 * 4 - 9 # умножение и вычитание"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"11.5"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"23 / 2 # деление"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Однако с делением все не так просто: Python 3 всегда будет выдавать результат в виде числа с плавающей точкой (*float*), даже тогда, когда ожидается целочисленный ответ. Например:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.0"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"6 / 2 # не 3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Получился дробный результат, где дробная часть равна 0. Как быть, если нужен ответ в виде целого числа? Можно воспользоваться целочисленным делением."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"6 // 2 # теперь 3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Тут важно помнить, что при использовании оператора `\\\\` дробная часть всегда будет просто отбрасываться – никакого округления происходить не будет."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"6 // 4 # от 1.5 осталось 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В Python 2 обычное деление (с помощью `\\`) было целочисленным. Для того чтобы получить привычные результаты деления, нужно было либо импортировать обычное деление из модуля `__future__`, который позволяет использовать функционал более новых версий Python (см. [здесь](http://rextester.com/VMMS70343)), либо использовать другие хитрости, например, делить число с плавающей точкой на целое (см. [здесь](http://rextester.com/YJZV11974)).\n",
"\n",
"*Примечание:* для того, чтобы сравнивать исполнение одного и того же кода в Python 3 и Python 2 совсем необязательно устанавливать обе версии на компьютер. Можно воспользоваться онлайн-компиляторами (например, http://rextester.com: выбирать Python или Python 3) и запускать код прямо в браузере. Речь идет, конечно, о небольших фрагментах кода. Полноценно работать в них, не устанавливая Python, будет неудобно. Но для нескольких строк для сравнения как раз. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Что еще можно делать с числами? Возводить в степень и извлекать из них корень. При расчетах на калькуляторе и в R для возведения числа в степень мы обычно используем символ `^`. Попробуем! "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"2 ^ 3 # ой"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Получилось что-то неожиданное. В Python оператор `^` используется для побитного сложения по модулю два. Для возведения числа в степень потребуется `**` (кстати, в R тоже для возведения в степень можно использовать двойную звездочку): "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"8"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"2 ** 3 # как нужно"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Теперь попробуем извлечь квадратный корень из числа с помощью привычного `sqrt`."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'sqrt' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-9-baf0a9e4b790>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m9\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# не получается!\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'sqrt' is not defined"
]
}
],
"source": [
"sqrt(9) # не получается!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python пишет, что не знает, что такое `sqrt`. В каких случаях Python может такое писать? Например, если мы опечатались в названии функции (Python не понимает, что мы от него хотим) или если мы пытаемся обратиться к функции, которая не является базовой (Python не знает, откуда ее брать). В нашем случае у нас вторая проблема. Функция для вычисления квадратного корня из числа хранится в специальном модуле `math`. Этот модуль стандартный, дополнительно устанавливать его не нужно. Но для того, чтобы воспользоваться этой функцией, нужно сначала импортировать модуль, а потом вызвать из него функцию `sqrt` (для тех, кто работал в R -- процедура, аналогичная `library()`."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"import math # импортируем модуль math"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.0"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"math.sqrt(9) # теперь все работает"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Если из `math` нам нужна только одна функция `sqrt` , можно извлечь только ее, и тогда прописывать название модуля перед функцией не понадобится: "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4.0"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from math import sqrt\n",
"sqrt(16) # так тоже работает"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В `math` есть много полезных функций для вычислений. Чтобы посмотреть, какие функции там есть, после импортирования всего модуля через `import math` можно набрать `math.` и нажать на *Tab* (табуляция, кнопка над *Caps Lock*). Точно так же можно Помимо квадратного корня этот модуль поможет вычислить логарифм (натуральный и не только), синус, косинус и так далее."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.6931471805599453"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"math.log(2) # натуральный логарифм"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2.0"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"math.log10(100) # десятичный логарифм (логарифм по основанию 10)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"math.sin(0) # синус"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"А еще из `math` можно импортировать константы $\\pi$ и $e$:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"from math import pi, exp # можно сразу несколько - перечислить через запятую"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.141592653589793"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pi"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2.718281828459045"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"exp(1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"С чем еще можно столкнуться, выполняя вычисления в Python? С такими вещами:"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4.1513310942010236e-32"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"1 / 18 ** 25"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Результат выше – компьютерная форма экспоненциальной записи числа. Возможно, тот, кто считал что-то на научных или инженерных калькуляторах, уже сталкивался с такой записью. Здесь `e-32` – это $10^{-32}$, а вся запись означает $4.1513310942010236 \\cdot 10^{-32}$, то есть примерно $4.15 \\cdot 10^{-32}$. Если бы число было очень большим, `e` стояло бы в положительной степени. \n",
"\n",
"Такая компьютерная форма записи числа отчасти помогает понять, почему дробные числа называются числами с плавающей точкой (*float*). Возьмем число попроще, например, $12.34$. Его можно записать как $12.34$, как $1.234 \\cdot 10$, как $123.4 \\cdot 10^{-1}$, $1234 \\cdot 10^{-2}$ и так далее. Точка, отделяющая дробную часть от целой, будет \"плавать\", однако само число при этом меняться не будет, будут меняться только множители ‒ разные степени десятки."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"С числами с плавающей точкой связана еще одна сложность — округление. На первый взгляд, все хорошо:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"13"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(12.6) # округлим до целого"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"12.5"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(12.53, 1) # округлим до первого знака после запятой"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"С другой стороны, могут возникнуть странности: "
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(2.50) # не 3"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.52"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(3.525, 2) # не 3.53"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Эти странности связаны с тем, что число, которое мы видим (например, 3.525), не совпадает с тем, которое хранится в компьютере, потому что оно при сохранении преобразовывается и превращается из точного 3.525 в такое:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Decimal('3.524999999999999911182158029987476766109466552734375')"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from decimal import Decimal\n",
"Decimal(3.525)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"И такое число будет законно округляться до 3.52 по правилам арифметического округления. Не то чтобы это очень важная информация, которую нужно всегда иметь в виду, но знать про нее полезно, просто чтобы не пугаться и не удивляться неожиданным результатам."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Переменные"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Переменные в программировании похожи на переменные в математике. Кроме того, их можно рассматривать как хранилища значений – «коробки», в которые мы что-то кладем. Python, в отличие от некоторых языков программирования (C, C++, Java), сам распознает что мы «кладем в коробку»: число, целое число, текст, список чисел... Поэтому при создании переменной нам не нужно указывать ее тип."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"x = 2\n",
"y = 3"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n",
"3\n"
]
}
],
"source": [
"print(x)\n",
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Значения переменных мы можем обновлять – изменить значение и сохранить в переменную с тем же названием. "
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"x = x + 1 # возьмем значение x, увеличим на 1 и сохраним изменения в переменной x"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"y = y * 2 # возьмем значение y, увеличим в 2 раза и сохраним изменения"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3 6\n"
]
}
],
"source": [
"print(x, y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Рассмотрим такую задачу. Пришла весна и решили мы заняться бегом по такой схеме: каждый день мы пробегаем столько, сколько в сумме за два предыдущих дня. При этом первые два дня мы морально готовимся: топчемся на месте и символически проходим по одному метру (полшага назад и полшага вперед). Если мы будем записывать все пройденные нами расстояния в ряд, мы получим последовательность из [чисел Фибоначчи](https://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%B0_%D0%A4%D0%B8%D0%B1%D0%BE%D0%BD%D0%B0%D1%87%D1%87%D0%B8). Давайте напишем код, который будет считать, сколько метров мы будем пробегать в следующий день."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Сначала создадим переменные, в которые сохраним данные по первым двум дням."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"b = 1 # день 1 - готовимся бегать, \"бежим\" 1 метр \n",
"i = 1 # номер дня, когда начинаем бегать\n",
"bnext = 1 # день 2 - готовимся бегать, \"бежим\" 1 метр\n",
"i = i + 1 # перешли ко второму дню, увеличили i на 1"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3 2\n"
]
}
],
"source": [
"res = b + bnext # в следующий день пробегаем столько же, сколько за два предыдущих\n",
"i = i + 1 # перешли к следующему дню, увеличили i на 1\n",
"b = bnext # значение b нам уже не нужно, сдвигаемся к следующему дню - записываем bnext\n",
"bnext = res # запомнили полученное значение res\n",
"print(i, bnext) # выводим на экран номер дня и расстояние, которое нужно пробежать"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Теперь можно прогонять предыдущую ячейку много раз (через *Ctrl + Enter*) и получать результат по каждому дню. Например, на 20 день мы будем пробегать уже нормальное расстояние — 6765 метров, почти 7 километров. Конечно, прогонять одну и ту ячейку много раз неудобно и странно, но о том, как считать числа Фибоначчи более рационально, мы поговорим, когда будем разбирать циклы.\n",
"\n",
"**Важно:** если бы не разбили наш код на части (на две ячейки), ничего бы при повторном запуске ячейки не произошло — переменным *b*, *bnext* и *i* заново присваивались значения 1, и движения вперед бы не происходило."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Типы переменных и преобразование типов"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Типы переменных (не путать с data types):\n",
"\n",
"* числовой c плавающей точкой (*float*)\n",
"* целочисленный (*integer*)\n",
"* строковый или текстовый (*string*)\n",
"* логический (*boolean*): только два значения True и False\n",
"\n",
"*Примечание:* в R вместо *float* был numeric, вместо *string* – *character*, вместо *boolean* – *logical*."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Посмотрим, как определить тип переменной:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"float"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = 2.34\n",
"type(x)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"int"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y = 2\n",
"type(y)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"str"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r = 'hello'\n",
"type(r)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"bool"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"l = True\n",
"type(l)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Иногда требуется преобразовать тип переменной, например, из числа с плавающей точкой сделать целое число. Зачем это бывает нужно? Для удобства и для более корректной выдачи результатов. Например, у нас есть база данных по респондентам, в которой указан их год рождения, и мы хотим добавить столбец с возрастом респондентов (числом полных лет). Из-за того, что кто-то ввел год в виде 1993.0, возраст при вычислениях тоже получится числом с плавающей точкой — 25.0. Так как мы знаем, что возраст всегда будет целым, чтобы дробная часть не смущала, можно привести все значения к целочисленному типу. "
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"int(25.0) # int - от integer"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Вообще функции для изменения типа переменных называются так же, как и сами типы или их сокращенные названия."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"23.0"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"float(23)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'2'"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"str(2)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"23"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"int(\"23\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Однако, если преобразование невозможно, Python выдаст ошибку (а точнее, исключение):"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "could not convert string to float: '23,56'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-41-b3dd92f20a26>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'23,56'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mValueError\u001b[0m: could not convert string to float: '23,56'"
]
}
],
"source": [
"float('23,56')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Так как запятая не воспринимается как десятичный разделитель в Python (в качестве разделителя используется точка), превратить строку '23,56' в число не получится, нужно будет сначала заменить запятую на точку. Как работать со строками, мы обсудим позже, но если интересно, можно сделать следующее: создать любую строковую переменную, а потом после ее названия поставить точку и нажать *Tab*. Так же, как и в случае с модулем *math*, выпадет список всех возможных методов, которые можно применять к строке. "
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
"words = \"political science\""
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Political science'"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"words.capitalize() # например, метод capitalize"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on built-in function capitalize:\n",
"\n",
"capitalize(...) method of builtins.str instance\n",
" S.capitalize() -> str\n",
" \n",
" Return a capitalized version of S, i.e. make the first character\n",
" have upper case and the rest lower case.\n",
"\n"
]
}
],
"source": [
"help(words.capitalize) # информация по нему"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment