Интерактивный интерпретатор

Данный курс будет посвящен изучению программирования с использованием языка Python. Это — современный язык программирования, работающий на всех распространных операционных системах.

В настоящее время существует две версии языка Python: более старая, но пока ещё более распространненая версия 2 и современная версия 3. Они не вполне совместимы друг с другом: программа, написанная для одной версии языка может оказаться невыполнимой для другой версии. Но в основном обе версии очень похожи.

Мы будем использовать версию 3 данного языка, некоторые из используемых примеров не будут работать с версией 2. Последняя версия языка, доступная в ноябре 2011 года — 3.2.2, именно её необходимо установить дома, скачав данную версию с сайта www.python.org.

Запустить интерпретатор python можно из командной строки:

$ python

Вы увидите примерно следующее приглашение командной строки:

Python 3.2.2 (r312:79147, Jun 12 2010, 15:29:06) 
[GCC 4.4.3 20100316 (ALT Linux 4.4.3-alt2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Смело вводите команды и наслаждайтесь результатом. А что можно вводить? Несколько примеров:

>>> 2 + 2
4
>>> 2 ** 100
1267650600228229401496703205376
>>> 'Hello' + 'World'
'HelloWorld'
>>> 'ABC' * 100
'ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC'

Первая команда вычисляет сумму двух чисел, вторая команда вычисляет 2 в степени 100, третья команда выполняет операцию конкатенации для строк, а четвертая команда печатает строку 'ABC', повторенную 100 раз.

Хотите закончить работу с питоном? Введите команду exit() (именно так, со скобочками, так как это — функция), или нажмите Ctrl+D.

Типы данных

Итак, мы видим, что Питон умеет работать как минимум с двумя видами данных — числами и строками. Числа записываются последовательностью цифр, также перед числом может стоять знак минус, а строки записываются в одинарных кавычках. 2 и '2' — это разные объекты, первый объект — число, а второй —строка. Операция + для целых чисел и для строк работает по-разному: для чисел это сложение, а для строк —конкатенация.

Кроме целых чисел есть и другой класс чисел: действительные (вещественные числа), представляемые в виде десятичных дробей. Они записываются с использованием десятичной точки, например, 2.0. В каком-то смысле, 2 и 2.0 имеют равные значение, но это—разные объекты. Например, можно вычислить значения выражения 'ABC' * 10 (повторить строку 10 раз), но нельзя вычислить 'ABC' * 10.0.

Определить тип объекта можно при помощи функции type:

>>> type(2)
<class 'int'>
>>> type('2')
<class 'str'>
>>> type(2.0)
<class 'float'>

Обратите внимание —type является функцией, аргументы функции указываются в скобках после ее имени.

Вот список основных операций для чисел:
A + B — сумма;
A - B — разность;
A * B — произведение;
A / B — частное;
A ** B — возведение в степень. Полезно помнить, что квадратный корень из числа x — это x ** 0.5, а корень степени n это x ** (1 / n).

Есть также унарный вариант операции -, то есть операция с одним аргументом. Она возвращает число, противоположное данному. Например: -A.

В выражении может встречаться много операций подряд. Как в этом случае определяется порядок действий? Например, чему будет равно 1 + 2 * 3 ** 1 + 1? В данном случае ответ будет 8, так как сначала выполняется возведение в степень, затем – умножение, затем — сложение.

Более общие правила определения приоритетов операций такие:

  1. Выполняются возведения в степень справа налево, то есть 3 ** 3 ** 3 это 3^(3^3).
  2. Выполняются унарные минусы (отрицания).
  3. Выполняются умножения и деления слева направо. Операции умножения и деления имеют одинаковый приоритет.
  4. Выполняются сложения и вычитания слева направо. Операции сложения и вычитания имеют одинаковый приоритет.

Основные операции над строками:
A + B — конкатенация;
A * n — повторение n раз, значение n должно быть целого типа.

Преобразование типов

Иногда бывает полезно целое число записать, как строку. И, наоборот, если строка состоит из цифр, то полезно эту строку представить в виде числа, чтобы дальше можно было выполнять арифметические операции с ней. Для этого используются функции, одноименные с именем типа, то есть int, float, str. Например, int('123') вернет целое число 123, а str(123) вернет строку '123'.

Пример:

>>> str(2 + 2) * int('2' + '2')
'4444444444444444444444'

Результатом будет строка из числа 4, повторенная 22 раза.

Упражнения

A: Вычислите 21543.

B: Вычислите 15! (произведение натуральных чисел от 1 до 15).

C: Вычислите длину гипотенузы в прямоугольном треугольнике со сторонами 1543 и 4315.

D: Вычислим следующее выражение: 1/2+1/4+1/8+1/16+... Вычислите сумму первых 10 членов ряда. Что получилось?

E: Запишите букву 'A' (латинскую, заглавную) 100 раз подряд.

F: Запишите слово 'Python' 100 раз подряд.

G: Какого типа будет результат выполнения арифметических операций над различными типами данных?

  1. Пусть A имеет тип int, B имеет тип int. Какой тип будет у выражения A + B?
  2. Пусть A имеет тип int, B имеет тип int. Какой тип будет у выражения A * B?
  3. Пусть A имеет тип int, B имеет тип int. Какой тип будет у выражения A ** B?
  4. Пусть A имеет тип int, B имеет тип float. Какой тип будет у выражения A + B?
  5. Пусть A имеет тип float, B имеет тип int. Какой тип будет у выражения A ** B?
  6. Пусть A имеет тип float, B имеет тип float. Какой тип будет у выражения A + B?
  7. Пусть A имеет тип float, B имеет тип float. Какой тип будет у выражения A / B?
  8. Пусть A имеет тип float, B имеет тип int. Какой тип будет у выражения A / B?
  9. Пусть A имеет тип int, B имеет тип int. Какой тип будет у выражения A / B?
  10. Пусть A имеет тип str, B имеет тип str. Какой тип будет у выражения A + B?
  11. Пусть A имеет тип str, B имеет тип int. Какой тип будет у выражения A * B?
  12. Пусть A имеет тип int, B имеет тип str. Какой тип будет у выражения A * B?
  13. Пусть A имеет тип str, B имеет тип float. Какой тип будет у выражения A * B?
  14. Пусть A имеет тип str, B имеет тип str. Какой тип будет у выражения A * B?
  15. Пусть A имеет тип str, B имеет тип int. Какой тип будет у выражения A + B?
  16. Пусть A имеет тип str, B имеет тип int. Какой тип будет у выражения A ** B?
  17. Пусть A имеет тип str, B имеет тип str. Какой тип будет у выражения A ** B?

H: Число 179 записали 50 раз подряд. Полученное 150-значное число возвели в квадрат. Сколько получилось?

I: Число 17910 записали четыре раза подряд. Из получившегося числа извлекли корень степени 10 (то есть возвели число в степень 1/10). Сколько получилось?