##
3.1.1 Numbers

The interpreter acts as a simple calculator: you can type an expression at it and it will write the value. Expression syntax is straightforward: the operators `+`, `-`, `*` and `/`work just like in most other languages (e.g., Pascal or C); parentheses can be used for grouping. For example:

      >>> 2+2
      4
      >>> # This is a comment
      ... 2+2
      4
      >>> 2+2  # and a comment on the same line as code
      4
      >>> (50-5*6)/4
      5
      >>> # Integer division returns the floor:
      ... 7/3
      2
      >>> 7/-3
      -3

Like in C, the equal sign ("`=`") is used to assign a value to a variable. The value of an assignment is not written:

      >>> width = 20
      >>> height = 5*9
      >>> width * height
      900

A value can be assigned to several variables simultaneously:

      >>> x = y = z = 0  # Zero x, y and z
      >>> x
      0
      >>> y
      0
      >>> z
      0

There is full support for floating point; operators with mixed type operands convert the integer operand to floating point:

      >>> 4 * 2.5 / 3.3
      3.0303030303
      >>> 7.0 / 2
      3.5

Complex numbers are also supported; imaginary numbers are written with a suffix of "`j`" or "`J`". Complex numbers with a nonzero real component are written as "`(real+imagj)`", or can be created with the "`complex(real, imag)`" function.

      >>> 1j * 1J
      (-1+0j)
      >>> 1j * complex(0,1)
      (-1+0j)
      >>> 3+1j*3
      (3+3j)
      >>> (3+1j)*3
      (9+3j)
      >>> (1+2j)/(1+1j)
      (1.5+0.5j)

Complex numbers are always represented as two floating point numbers, the real and imaginary part. To extract these parts from a complex number z, use `z.real` and `z.imag`.

      >>> a=1.5+0.5j
      >>> a.real
      1.5
      >>> a.imag
      0.5

The conversion functions to floating point and integer (`float()`, `int()` and `long()`) don't work for complex numbers -- there is no one correct way to convert a complex number to a real number. Use `abs(z)` to get its magnitude (as a float) or `z.real` to get its real part.

      >>> a=1.5+0.5j
      >>> float(a)
      Traceback (innermost last):
        File "<stdin>", line 1, in ?
      TypeError: can't convert complex to float; use e.g. abs(z)
      >>> a.real
      1.5
      >>> abs(a)
      1.58113883008

In interactive mode, the last printed expression is assigned to the variable `_`. This means that when you are using Python as a desk calculator, it is somewhat easier to continue calculations, for example:

      >>> tax = 17.5 / 100
      >>> price = 3.50
      >>> price * tax
      0.6125
      >>> price + _
      4.1125
      >>> round(_, 2)
      4.11

This variable should be treated as read-only by the user. Don't explicitly assign a value to it -- you would create an independent local variable with the same name masking the built-in variable with its magic behavior.