Числа

Арифметические операции имеют ожидаемые приоритеты. При необходимости используются скобки.

In [1]:
1+2*3
Out[1]:
7
In [2]:
(1+2)*3
Out[2]:
9

Возведение целого числа в целую степень даёт целое число, если показатель степени $\ge0$, и число с плавающей точкой, если он $<0$. Так что тип результата невозможно определить статически, если значение переменной n неизвестно.

In [3]:
n=3
2**n
Out[3]:
8
In [4]:
n=-3
2**n
Out[4]:
0.125

Арифметические операции можно применять к целым и числам с плавающей точкой в любых сочетаниях.

In [5]:
n+1.0
Out[5]:
-2.0

Деление целых чисел всегда даёт результат с плавающей точкой, даже если они делятся нацело. Операторы // и % дают целое частное и остаток.

In [6]:
7/4
Out[6]:
1.75
In [7]:
7//4
Out[7]:
1
In [8]:
7%4
Out[8]:
3
In [9]:
4/2
Out[9]:
2.0

Если Вы попытаетесь использовать переменную, которой не присвоено никакого значения, то получите сообщение об ошибке.

In [10]:
x+1
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-10-d9a77b2c0933> in <module>()
----> 1 x+1

NameError: name 'x' is not defined

x+=1 означает x=x+1, аналогично для других операций. В питоне строго различаются операторы (например, присваивание) и выражения, так что таких операций, как ++ в C, нет. Хотя вызов функции в выражении может приводить к побочным эффектам.

In [11]:
x=1
x+=1
print(x)
2
In [12]:
x*=2
print(x)
4

Оператор del уничтожает переменную.

In [13]:
del x
x
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-13-726510e32795> in <module>()
      1 del x
----> 2 x

NameError: name 'x' is not defined

Любопытная особенность питона: можно использовать привычные из математики сравнения вроде $x<y<z$, которые в других языках пришлось бы записывать как x<y and y<z.

In [14]:
1<2<=2
Out[14]:
True
In [15]:
1<2<2
Out[15]:
False

Логические выражения можно комбинировать с помощью and и or (эти операции имеют более низкий приоритет, чем сравнения). Если результат уже ясен из первого операнда, второй операнд не вычисляется. А вот так выглядит оператор if.

In [16]:
n=4
# Кстати, это комментарий
if 1<2 and n<3:
    print('T')
else:
    print('F')
F
In [17]:
if 1<2 or n<3:
    print('T')
else:
    print('F')
T

После строчки, заканчивающейся :, можно писать последовательность операторов с одинаковым отступом (больше, чем у строчки if). Никакого признака конца такой группы операторов не нужно. Первая строчка после else:, имеющая тот же уровень отступа, что и if и else: - это следующий оператор после if.

Оператора, аналогичного case или switch, в питоне нет. Используйте длинную последовательность if ... elif ... elif ... else.

In [18]:
if n==1:
    print('один')
elif n==2:
    print('два')
elif n==3:
    print('три')
else:
    print('много')
много

Есть и условные выражения:

In [19]:
(0 if n<0 else 1)+1
Out[19]:
2

Обычно в начале пишется основное выражение, оно защищается условием в if, а после else пишется исключительный случай.

В питоне немного встроенных функций. Большинство надо импортировать. Элементарные функции импортируют из модуля math. Заниматься импортозамещением (писать свою реализацию синуса) не нужно.

In [20]:
from math import sin,pi
In [21]:
pi
Out[21]:
3.141592653589793
In [22]:
sin(pi/6)
Out[22]:
0.49999999999999994

Любой объект имеет тип.

In [23]:
type(2)
Out[23]:
int
In [24]:
type(int)
Out[24]:
type
In [25]:
type(2.1)
Out[25]:
float
In [26]:
type(True)
Out[26]:
bool

Имена типов по совместительству являются функциями, преобразующими в этот тип объекты других типов (если такое преобразование имеет смысл).

In [27]:
float(2)
Out[27]:
2.0
In [28]:
int(2.0)
Out[28]:
2
In [29]:
int(2.9)
Out[29]:
2
In [30]:
int(-2.9)
Out[30]:
-2

Преобразование числа с плавающей точкой в целое производится путём отбрасывания дробной части, а не округления. Для округления используется функция round.

In [31]:
round(2.9)
Out[31]:
3