Важно иметь в виду, что синтаксис функции print в версиях Python 2.7 и 3.0 разный. В Python 2.7 можно написать print
x, y, но в Python 3.0 такой код вызовет ошибку, нужно использовать круглые скобки и писать print(x, y). Код со скобками будет работать в обеих версиях Python, поэтому в примерах используется именно он.И еще один момент насчет вывода значений. По умолчанию Python может выдавать ошибку при использовании русских букв, нужно указывать кодировку символов. Чтобы избежать этого и сделать код короче, во многих примерах будут по возможности указываться английские или “международные” аббревиатуры.
int x = 3;
int y = 10;
printf("x=%d
\n", x);printf("%d
\n", x+y);Циклы
В отличие от того же С++ или Java, циклы в Python задаются отступами, что после других языков программирования может быть непривычным. Часть кода, находящаяся внутри цикла, будет выполнена заданное количество раз.
Вывод чисел от 1 до 9:
for
p in range(1,10):Для сравнения, вот такой код без отступов работать не будет, и это важно помнить, например при копировании кода из этой книги:
for
p in range(1,10):Вывод чисел от 1 до 9 с шагом 2:
for
p in range(1,10,2):Кстати, в Python 2.7
функция range возвращает объект “список”, и соответственно выделяет память заданного размера. Для большинства примеров в книге это не критично, но если нужно написать код типаВывод чисел от 1 до 9:
for
(int i=1; i<10; i++) {printf("%d
\n", i);}
Вывод чисел от 1 до 9 с шагом 2:
for
(int i=1; i < 10; i += 2) {printf("%d
\n", i);}
Массивы
Массив это линейный набор чисел, с которыми удобно выполнять однотипные операции, например вычисление суммы или среднего арифметического.
Объявляем массив чисел:
values = [1,2,3,5,10,15,20]
Добавляем элемент в массив:
values.append(7)
Выводим массив на экран:
Выводим элементы массива построчно:
for
p in values:Это же можно сделать с помощью индексов (нумерация элементов массива начинается с 0):
for
i in range(0, len(values)):Можно получить и значение и индекс сразу, иногда это удобно.
for
i, item in enumerate(mylist):Можно создать массив определенного размера, заполненный определенными числами. Создадим массив из 100 элементов, заполненный нулями.
values = [0.0] * 100
Есть немного более сложный, но и более гибкий вариант создания массива. Создадим массив из 100 элементов, заполненный нулями:
values = [0.0 for
i in range(100)]Создадим массив, заполненный числами 0,1,..,99:
values = [i for
i in range(100)]Создадим массив, заполненный квадратами чисел:
values = [i*i for
i in range(100)]Создать двухмерный массив в Python также несложно:
matrix4x4 = [ [0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0]]
matrix4x4[0][0] = 1
Аналогично вышеописанному способу, можно создать 2х-мерный массив 100x100:
values100x100 = [[0.0 for
j in range(100)] for i in range(100)]Динамические массивы поддерживаются только в C++, статические массивы создаются так:
int values[7] = {1, 2, 3, 5, 10, 15, 20};
for
(int i=0; i < 7; i++) {printf("%d
\n", values[i]);}
При желании можно слегка схитрить, если максимальный размер массива заранее известен.
int values[255] = {1, 2, 3, 5, 10, 15, 20}, cnt = 7;
for
(int i=0; i < cnt; i++) {printf("%d
\n", values[i]);}
values[cnt] = 7;
cnt++;
Можно пользоваться динамическим распределением памяти, хотя это немного сложнее:
int *valuesArray = (int *)malloc(10 * sizeof(int));
valuesArray[0] = 1;
valuesArray[1] = 3;
valuesArray[2] = 15;
valuesArray = (int *)realloc(valuesArray, 25 * sizeof(int));
valuesArray[20] = 555;
valuesArray[21] = 777;
for
(int i=0; i < 25; i++) {printf("%d
\n", valuesArray[i]);}
free(valuesArray);
Важно заметить, что неинициализированные значения массива, например valuesArray[16], будут содержать “мусор”, некие значения которые были до этого в памяти. Си достаточно низкоуровневый язык, и такие моменты нужно учитывать. Хорошим тоном является инициализация всех переменных при их описании. Вот такой код формально не содержит ошибок:
int x;
printf("x=%d
\n", x);Однако при его запуске выведется значение 4196608, или 0, или 32, результат непредсказуем. В большой программе такие ошибки может быть сложно найти, тем более что проявляться они могут не всегда.
Арифметические операции
Сложение, умножение, деление:
x1 = 3
x2 = (2*x1*x1 + 10*x1 + 7)/x1
Возведение в степень:
x3 = x1**10
Переменную также можно увеличить или уменьшить:
x1 += 1
x1 -= 10
Остаток от деления:
x2 = x1 % 6
Условия в Python кстати, задаются отступами, аналогично циклам: