symbian-qemu-0.9.1-12/python-2.6.1/Doc/tutorial/introduction.rst
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 .. _tut-informal:
       
     2 
       
     3 **********************************
       
     4 An Informal Introduction to Python
       
     5 **********************************
       
     6 
       
     7 In the following examples, input and output are distinguished by the presence or
       
     8 absence of prompts (``>>>`` and ``...``): to repeat the example, you must type
       
     9 everything after the prompt, when the prompt appears; lines that do not begin
       
    10 with a prompt are output from the interpreter. Note that a secondary prompt on a
       
    11 line by itself in an example means you must type a blank line; this is used to
       
    12 end a multi-line command.
       
    13 
       
    14 Many of the examples in this manual, even those entered at the interactive
       
    15 prompt, include comments.  Comments in Python start with the hash character,
       
    16 ``#``, and extend to the end of the physical line.  A comment may appear at the
       
    17 start of a line or following whitespace or code, but not within a string
       
    18 literal.  A hash character within a string literal is just a hash character.
       
    19 Since comments are to clarify code and are not interpreted by Python, they may
       
    20 be omitted when typing in examples.
       
    21 
       
    22 Some examples::
       
    23 
       
    24    # this is the first comment
       
    25    SPAM = 1                 # and this is the second comment
       
    26                             # ... and now a third!
       
    27    STRING = "# This is not a comment."
       
    28 
       
    29 
       
    30 .. _tut-calculator:
       
    31 
       
    32 Using Python as a Calculator
       
    33 ============================
       
    34 
       
    35 Let's try some simple Python commands.  Start the interpreter and wait for the
       
    36 primary prompt, ``>>>``.  (It shouldn't take long.)
       
    37 
       
    38 
       
    39 .. _tut-numbers:
       
    40 
       
    41 Numbers
       
    42 -------
       
    43 
       
    44 The interpreter acts as a simple calculator: you can type an expression at it
       
    45 and it will write the value.  Expression syntax is straightforward: the
       
    46 operators ``+``, ``-``, ``*`` and ``/`` work just like in most other languages
       
    47 (for example, Pascal or C); parentheses can be used for grouping.  For example::
       
    48 
       
    49    >>> 2+2
       
    50    4
       
    51    >>> # This is a comment
       
    52    ... 2+2
       
    53    4
       
    54    >>> 2+2  # and a comment on the same line as code
       
    55    4
       
    56    >>> (50-5*6)/4
       
    57    5
       
    58    >>> # Integer division returns the floor:
       
    59    ... 7/3
       
    60    2
       
    61    >>> 7/-3
       
    62    -3
       
    63 
       
    64 The equal sign (``'='``) is used to assign a value to a variable. Afterwards, no
       
    65 result is displayed before the next interactive prompt::
       
    66 
       
    67    >>> width = 20
       
    68    >>> height = 5*9
       
    69    >>> width * height
       
    70    900
       
    71 
       
    72 A value can be assigned to several variables simultaneously::
       
    73 
       
    74    >>> x = y = z = 0  # Zero x, y and z
       
    75    >>> x
       
    76    0
       
    77    >>> y
       
    78    0
       
    79    >>> z
       
    80    0
       
    81 
       
    82 Variables must be "defined" (assigned a value) before they can be used, or an
       
    83 error will occur::
       
    84 
       
    85    >>> # try to access an undefined variable
       
    86    ... n
       
    87    Traceback (most recent call last):   
       
    88      File "<stdin>", line 1, in <module>
       
    89    NameError: name 'n' is not defined
       
    90 
       
    91 There is full support for floating point; operators with mixed type operands
       
    92 convert the integer operand to floating point::
       
    93 
       
    94    >>> 3 * 3.75 / 1.5
       
    95    7.5
       
    96    >>> 7.0 / 2
       
    97    3.5
       
    98 
       
    99 Complex numbers are also supported; imaginary numbers are written with a suffix
       
   100 of ``j`` or ``J``.  Complex numbers with a nonzero real component are written as
       
   101 ``(real+imagj)``, or can be created with the ``complex(real, imag)`` function.
       
   102 ::
       
   103 
       
   104    >>> 1j * 1J
       
   105    (-1+0j)
       
   106    >>> 1j * complex(0,1)
       
   107    (-1+0j)
       
   108    >>> 3+1j*3
       
   109    (3+3j)
       
   110    >>> (3+1j)*3
       
   111    (9+3j)
       
   112    >>> (1+2j)/(1+1j)
       
   113    (1.5+0.5j)
       
   114 
       
   115 Complex numbers are always represented as two floating point numbers, the real
       
   116 and imaginary part.  To extract these parts from a complex number *z*, use
       
   117 ``z.real`` and ``z.imag``.   ::
       
   118 
       
   119    >>> a=1.5+0.5j
       
   120    >>> a.real
       
   121    1.5
       
   122    >>> a.imag
       
   123    0.5
       
   124 
       
   125 The conversion functions to floating point and integer (:func:`float`,
       
   126 :func:`int` and :func:`long`) don't work for complex numbers --- there is no one
       
   127 correct way to convert a complex number to a real number.  Use ``abs(z)`` to get
       
   128 its magnitude (as a float) or ``z.real`` to get its real part. ::
       
   129 
       
   130    >>> a=3.0+4.0j
       
   131    >>> float(a)
       
   132    Traceback (most recent call last):
       
   133      File "<stdin>", line 1, in ?
       
   134    TypeError: can't convert complex to float; use abs(z)
       
   135    >>> a.real
       
   136    3.0
       
   137    >>> a.imag
       
   138    4.0
       
   139    >>> abs(a)  # sqrt(a.real**2 + a.imag**2)
       
   140    5.0
       
   141    >>>
       
   142 
       
   143 In interactive mode, the last printed expression is assigned to the variable
       
   144 ``_``.  This means that when you are using Python as a desk calculator, it is
       
   145 somewhat easier to continue calculations, for example::
       
   146 
       
   147    >>> tax = 12.5 / 100
       
   148    >>> price = 100.50
       
   149    >>> price * tax
       
   150    12.5625
       
   151    >>> price + _
       
   152    113.0625
       
   153    >>> round(_, 2)
       
   154    113.06
       
   155    >>>
       
   156 
       
   157 This variable should be treated as read-only by the user.  Don't explicitly
       
   158 assign a value to it --- you would create an independent local variable with the
       
   159 same name masking the built-in variable with its magic behavior.
       
   160 
       
   161 
       
   162 .. _tut-strings:
       
   163 
       
   164 Strings
       
   165 -------
       
   166 
       
   167 Besides numbers, Python can also manipulate strings, which can be expressed in
       
   168 several ways.  They can be enclosed in single quotes or double quotes::
       
   169 
       
   170    >>> 'spam eggs'
       
   171    'spam eggs'
       
   172    >>> 'doesn\'t'
       
   173    "doesn't"
       
   174    >>> "doesn't"
       
   175    "doesn't"
       
   176    >>> '"Yes," he said.'
       
   177    '"Yes," he said.'
       
   178    >>> "\"Yes,\" he said."
       
   179    '"Yes," he said.'
       
   180    >>> '"Isn\'t," she said.'
       
   181    '"Isn\'t," she said.'
       
   182 
       
   183 String literals can span multiple lines in several ways.  Continuation lines can
       
   184 be used, with a backslash as the last character on the line indicating that the
       
   185 next line is a logical continuation of the line::
       
   186 
       
   187    hello = "This is a rather long string containing\n\
       
   188    several lines of text just as you would do in C.\n\
       
   189        Note that whitespace at the beginning of the line is\
       
   190     significant."
       
   191 
       
   192    print hello
       
   193 
       
   194 Note that newlines still need to be embedded in the string using ``\n``; the
       
   195 newline following the trailing backslash is discarded.  This example would print
       
   196 the following::
       
   197 
       
   198    This is a rather long string containing
       
   199    several lines of text just as you would do in C.
       
   200        Note that whitespace at the beginning of the line is significant.
       
   201 
       
   202 If we make the string literal a "raw" string, however, the ``\n`` sequences are
       
   203 not converted to newlines, but the backslash at the end of the line, and the
       
   204 newline character in the source, are both included in the string as data.  Thus,
       
   205 the example::
       
   206 
       
   207    hello = r"This is a rather long string containing\n\
       
   208    several lines of text much as you would do in C."
       
   209 
       
   210    print hello
       
   211 
       
   212 would print::
       
   213 
       
   214    This is a rather long string containing\n\
       
   215    several lines of text much as you would do in C.
       
   216 
       
   217 Or, strings can be surrounded in a pair of matching triple-quotes: ``"""`` or
       
   218 ``'''``.  End of lines do not need to be escaped when using triple-quotes, but
       
   219 they will be included in the string. ::
       
   220 
       
   221    print """
       
   222    Usage: thingy [OPTIONS] 
       
   223         -h                        Display this usage message
       
   224         -H hostname               Hostname to connect to
       
   225    """
       
   226 
       
   227 produces the following output::
       
   228 
       
   229    Usage: thingy [OPTIONS] 
       
   230         -h                        Display this usage message
       
   231         -H hostname               Hostname to connect to
       
   232 
       
   233 The interpreter prints the result of string operations in the same way as they
       
   234 are typed for input: inside quotes, and with quotes and other funny characters
       
   235 escaped by backslashes, to show the precise value.  The string is enclosed in
       
   236 double quotes if the string contains a single quote and no double quotes, else
       
   237 it's enclosed in single quotes.  (The :keyword:`print` statement, described
       
   238 later, can be used to write strings without quotes or escapes.)
       
   239 
       
   240 Strings can be concatenated (glued together) with the ``+`` operator, and
       
   241 repeated with ``*``::
       
   242 
       
   243    >>> word = 'Help' + 'A'
       
   244    >>> word
       
   245    'HelpA'
       
   246    >>> '<' + word*5 + '>'
       
   247    '<HelpAHelpAHelpAHelpAHelpA>'
       
   248 
       
   249 Two string literals next to each other are automatically concatenated; the first
       
   250 line above could also have been written ``word = 'Help' 'A'``; this only works
       
   251 with two literals, not with arbitrary string expressions::
       
   252 
       
   253    >>> 'str' 'ing'                   #  <-  This is ok
       
   254    'string'
       
   255    >>> 'str'.strip() + 'ing'   #  <-  This is ok
       
   256    'string'
       
   257    >>> 'str'.strip() 'ing'     #  <-  This is invalid
       
   258      File "<stdin>", line 1, in ?
       
   259        'str'.strip() 'ing'
       
   260                          ^
       
   261    SyntaxError: invalid syntax
       
   262 
       
   263 Strings can be subscripted (indexed); like in C, the first character of a string
       
   264 has subscript (index) 0.  There is no separate character type; a character is
       
   265 simply a string of size one.  Like in Icon, substrings can be specified with the
       
   266 *slice notation*: two indices separated by a colon. ::
       
   267 
       
   268    >>> word[4]
       
   269    'A'
       
   270    >>> word[0:2]
       
   271    'He'
       
   272    >>> word[2:4]
       
   273    'lp'
       
   274 
       
   275 Slice indices have useful defaults; an omitted first index defaults to zero, an
       
   276 omitted second index defaults to the size of the string being sliced. ::
       
   277 
       
   278    >>> word[:2]    # The first two characters
       
   279    'He'
       
   280    >>> word[2:]    # Everything except the first two characters
       
   281    'lpA'
       
   282 
       
   283 Unlike a C string, Python strings cannot be changed.  Assigning to an indexed
       
   284 position in the string results in an error::
       
   285 
       
   286    >>> word[0] = 'x'
       
   287    Traceback (most recent call last):
       
   288      File "<stdin>", line 1, in ?
       
   289    TypeError: object doesn't support item assignment
       
   290    >>> word[:1] = 'Splat'
       
   291    Traceback (most recent call last):
       
   292      File "<stdin>", line 1, in ?
       
   293    TypeError: object doesn't support slice assignment
       
   294 
       
   295 However, creating a new string with the combined content is easy and efficient::
       
   296 
       
   297    >>> 'x' + word[1:]
       
   298    'xelpA'
       
   299    >>> 'Splat' + word[4]
       
   300    'SplatA'
       
   301 
       
   302 Here's a useful invariant of slice operations: ``s[:i] + s[i:]`` equals ``s``.
       
   303 ::
       
   304 
       
   305    >>> word[:2] + word[2:]
       
   306    'HelpA'
       
   307    >>> word[:3] + word[3:]
       
   308    'HelpA'
       
   309 
       
   310 Degenerate slice indices are handled gracefully: an index that is too large is
       
   311 replaced by the string size, an upper bound smaller than the lower bound returns
       
   312 an empty string. ::
       
   313 
       
   314    >>> word[1:100]
       
   315    'elpA'
       
   316    >>> word[10:]
       
   317    ''
       
   318    >>> word[2:1]
       
   319    ''
       
   320 
       
   321 Indices may be negative numbers, to start counting from the right. For example::
       
   322 
       
   323    >>> word[-1]     # The last character
       
   324    'A'
       
   325    >>> word[-2]     # The last-but-one character
       
   326    'p'
       
   327    >>> word[-2:]    # The last two characters
       
   328    'pA'
       
   329    >>> word[:-2]    # Everything except the last two characters
       
   330    'Hel'
       
   331 
       
   332 But note that -0 is really the same as 0, so it does not count from the right!
       
   333 ::
       
   334 
       
   335    >>> word[-0]     # (since -0 equals 0)
       
   336    'H'
       
   337 
       
   338 Out-of-range negative slice indices are truncated, but don't try this for
       
   339 single-element (non-slice) indices::
       
   340 
       
   341    >>> word[-100:]
       
   342    'HelpA'
       
   343    >>> word[-10]    # error
       
   344    Traceback (most recent call last):
       
   345      File "<stdin>", line 1, in ?
       
   346    IndexError: string index out of range
       
   347 
       
   348 One way to remember how slices work is to think of the indices as pointing
       
   349 *between* characters, with the left edge of the first character numbered 0.
       
   350 Then the right edge of the last character of a string of *n* characters has
       
   351 index *n*, for example::
       
   352 
       
   353     +---+---+---+---+---+ 
       
   354     | H | e | l | p | A |
       
   355     +---+---+---+---+---+ 
       
   356     0   1   2   3   4   5 
       
   357    -5  -4  -3  -2  -1
       
   358 
       
   359 The first row of numbers gives the position of the indices 0...5 in the string;
       
   360 the second row gives the corresponding negative indices. The slice from *i* to
       
   361 *j* consists of all characters between the edges labeled *i* and *j*,
       
   362 respectively.
       
   363 
       
   364 For non-negative indices, the length of a slice is the difference of the
       
   365 indices, if both are within bounds.  For example, the length of ``word[1:3]`` is
       
   366 2.
       
   367 
       
   368 The built-in function :func:`len` returns the length of a string::
       
   369 
       
   370    >>> s = 'supercalifragilisticexpialidocious'
       
   371    >>> len(s)
       
   372    34
       
   373 
       
   374 
       
   375 .. seealso::
       
   376 
       
   377    :ref:`typesseq`
       
   378       Strings, and the Unicode strings described in the next section, are
       
   379       examples of *sequence types*, and support the common operations supported
       
   380       by such types.
       
   381 
       
   382    :ref:`string-methods`
       
   383       Both strings and Unicode strings support a large number of methods for
       
   384       basic transformations and searching.
       
   385 
       
   386    :ref:`new-string-formatting`
       
   387       Information about string formatting with :meth:`str.format` is described
       
   388       here.
       
   389 
       
   390    :ref:`string-formatting`
       
   391       The old formatting operations invoked when strings and Unicode strings are
       
   392       the left operand of the ``%`` operator are described in more detail here.
       
   393 
       
   394 
       
   395 .. _tut-unicodestrings:
       
   396 
       
   397 Unicode Strings
       
   398 ---------------
       
   399 
       
   400 .. sectionauthor:: Marc-Andre Lemburg <mal@lemburg.com>
       
   401 
       
   402 
       
   403 Starting with Python 2.0 a new data type for storing text data is available to
       
   404 the programmer: the Unicode object. It can be used to store and manipulate
       
   405 Unicode data (see http://www.unicode.org/) and integrates well with the existing
       
   406 string objects, providing auto-conversions where necessary.
       
   407 
       
   408 Unicode has the advantage of providing one ordinal for every character in every
       
   409 script used in modern and ancient texts. Previously, there were only 256
       
   410 possible ordinals for script characters. Texts were typically bound to a code
       
   411 page which mapped the ordinals to script characters. This lead to very much
       
   412 confusion especially with respect to internationalization (usually written as
       
   413 ``i18n`` --- ``'i'`` + 18 characters + ``'n'``) of software.  Unicode solves
       
   414 these problems by defining one code page for all scripts.
       
   415 
       
   416 Creating Unicode strings in Python is just as simple as creating normal
       
   417 strings::
       
   418 
       
   419    >>> u'Hello World !'
       
   420    u'Hello World !'
       
   421 
       
   422 The small ``'u'`` in front of the quote indicates that a Unicode string is
       
   423 supposed to be created. If you want to include special characters in the string,
       
   424 you can do so by using the Python *Unicode-Escape* encoding. The following
       
   425 example shows how::
       
   426 
       
   427    >>> u'Hello\u0020World !'
       
   428    u'Hello World !'
       
   429 
       
   430 The escape sequence ``\u0020`` indicates to insert the Unicode character with
       
   431 the ordinal value 0x0020 (the space character) at the given position.
       
   432 
       
   433 Other characters are interpreted by using their respective ordinal values
       
   434 directly as Unicode ordinals.  If you have literal strings in the standard
       
   435 Latin-1 encoding that is used in many Western countries, you will find it
       
   436 convenient that the lower 256 characters of Unicode are the same as the 256
       
   437 characters of Latin-1.
       
   438 
       
   439 For experts, there is also a raw mode just like the one for normal strings. You
       
   440 have to prefix the opening quote with 'ur' to have Python use the
       
   441 *Raw-Unicode-Escape* encoding. It will only apply the above ``\uXXXX``
       
   442 conversion if there is an uneven number of backslashes in front of the small
       
   443 'u'. ::
       
   444 
       
   445    >>> ur'Hello\u0020World !'
       
   446    u'Hello World !'
       
   447    >>> ur'Hello\\u0020World !'
       
   448    u'Hello\\\\u0020World !'
       
   449 
       
   450 The raw mode is most useful when you have to enter lots of backslashes, as can
       
   451 be necessary in regular expressions.
       
   452 
       
   453 Apart from these standard encodings, Python provides a whole set of other ways
       
   454 of creating Unicode strings on the basis of a known encoding.
       
   455 
       
   456 .. index:: builtin: unicode
       
   457 
       
   458 The built-in function :func:`unicode` provides access to all registered Unicode
       
   459 codecs (COders and DECoders). Some of the more well known encodings which these
       
   460 codecs can convert are *Latin-1*, *ASCII*, *UTF-8*, and *UTF-16*. The latter two
       
   461 are variable-length encodings that store each Unicode character in one or more
       
   462 bytes. The default encoding is normally set to ASCII, which passes through
       
   463 characters in the range 0 to 127 and rejects any other characters with an error.
       
   464 When a Unicode string is printed, written to a file, or converted with
       
   465 :func:`str`, conversion takes place using this default encoding. ::
       
   466 
       
   467    >>> u"abc"
       
   468    u'abc'
       
   469    >>> str(u"abc")
       
   470    'abc'
       
   471    >>> u"äöü"
       
   472    u'\xe4\xf6\xfc'
       
   473    >>> str(u"äöü")
       
   474    Traceback (most recent call last):
       
   475      File "<stdin>", line 1, in ?
       
   476    UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
       
   477 
       
   478 To convert a Unicode string into an 8-bit string using a specific encoding,
       
   479 Unicode objects provide an :func:`encode` method that takes one argument, the
       
   480 name of the encoding.  Lowercase names for encodings are preferred. ::
       
   481 
       
   482    >>> u"äöü".encode('utf-8')
       
   483    '\xc3\xa4\xc3\xb6\xc3\xbc'
       
   484 
       
   485 If you have data in a specific encoding and want to produce a corresponding
       
   486 Unicode string from it, you can use the :func:`unicode` function with the
       
   487 encoding name as the second argument. ::
       
   488 
       
   489    >>> unicode('\xc3\xa4\xc3\xb6\xc3\xbc', 'utf-8')
       
   490    u'\xe4\xf6\xfc'
       
   491 
       
   492 
       
   493 .. _tut-lists:
       
   494 
       
   495 Lists
       
   496 -----
       
   497 
       
   498 Python knows a number of *compound* data types, used to group together other
       
   499 values.  The most versatile is the *list*, which can be written as a list of
       
   500 comma-separated values (items) between square brackets.  List items need not all
       
   501 have the same type. ::
       
   502 
       
   503    >>> a = ['spam', 'eggs', 100, 1234]
       
   504    >>> a
       
   505    ['spam', 'eggs', 100, 1234]
       
   506 
       
   507 Like string indices, list indices start at 0, and lists can be sliced,
       
   508 concatenated and so on::
       
   509 
       
   510    >>> a[0]
       
   511    'spam'
       
   512    >>> a[3]
       
   513    1234
       
   514    >>> a[-2]
       
   515    100
       
   516    >>> a[1:-1]
       
   517    ['eggs', 100]
       
   518    >>> a[:2] + ['bacon', 2*2]
       
   519    ['spam', 'eggs', 'bacon', 4]
       
   520    >>> 3*a[:3] + ['Boo!']
       
   521    ['spam', 'eggs', 100, 'spam', 'eggs', 100, 'spam', 'eggs', 100, 'Boo!']
       
   522 
       
   523 Unlike strings, which are *immutable*, it is possible to change individual
       
   524 elements of a list::
       
   525 
       
   526    >>> a
       
   527    ['spam', 'eggs', 100, 1234]
       
   528    >>> a[2] = a[2] + 23
       
   529    >>> a
       
   530    ['spam', 'eggs', 123, 1234]
       
   531 
       
   532 Assignment to slices is also possible, and this can even change the size of the
       
   533 list or clear it entirely::
       
   534 
       
   535    >>> # Replace some items:
       
   536    ... a[0:2] = [1, 12]
       
   537    >>> a
       
   538    [1, 12, 123, 1234]
       
   539    >>> # Remove some:
       
   540    ... a[0:2] = []
       
   541    >>> a
       
   542    [123, 1234]
       
   543    >>> # Insert some:
       
   544    ... a[1:1] = ['bletch', 'xyzzy']
       
   545    >>> a
       
   546    [123, 'bletch', 'xyzzy', 1234]
       
   547    >>> # Insert (a copy of) itself at the beginning
       
   548    >>> a[:0] = a
       
   549    >>> a
       
   550    [123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]
       
   551    >>> # Clear the list: replace all items with an empty list
       
   552    >>> a[:] = []
       
   553    >>> a
       
   554    []
       
   555 
       
   556 The built-in function :func:`len` also applies to lists::
       
   557 
       
   558    >>> a = ['a', 'b', 'c', 'd']
       
   559    >>> len(a)
       
   560    4
       
   561 
       
   562 It is possible to nest lists (create lists containing other lists), for
       
   563 example::
       
   564 
       
   565    >>> q = [2, 3]
       
   566    >>> p = [1, q, 4]
       
   567    >>> len(p)
       
   568    3
       
   569    >>> p[1]
       
   570    [2, 3]
       
   571    >>> p[1][0]
       
   572    2
       
   573    >>> p[1].append('xtra')     # See section 5.1
       
   574    >>> p
       
   575    [1, [2, 3, 'xtra'], 4]
       
   576    >>> q
       
   577    [2, 3, 'xtra']
       
   578 
       
   579 Note that in the last example, ``p[1]`` and ``q`` really refer to the same
       
   580 object!  We'll come back to *object semantics* later.
       
   581 
       
   582 
       
   583 .. _tut-firststeps:
       
   584 
       
   585 First Steps Towards Programming
       
   586 ===============================
       
   587 
       
   588 Of course, we can use Python for more complicated tasks than adding two and two
       
   589 together.  For instance, we can write an initial sub-sequence of the *Fibonacci*
       
   590 series as follows::
       
   591 
       
   592    >>> # Fibonacci series:
       
   593    ... # the sum of two elements defines the next
       
   594    ... a, b = 0, 1
       
   595    >>> while b < 10:
       
   596    ...     print b
       
   597    ...     a, b = b, a+b
       
   598    ... 
       
   599    1
       
   600    1
       
   601    2
       
   602    3
       
   603    5
       
   604    8
       
   605 
       
   606 This example introduces several new features.
       
   607 
       
   608 * The first line contains a *multiple assignment*: the variables ``a`` and ``b``
       
   609   simultaneously get the new values 0 and 1.  On the last line this is used again,
       
   610   demonstrating that the expressions on the right-hand side are all evaluated
       
   611   first before any of the assignments take place.  The right-hand side expressions
       
   612   are evaluated  from the left to the right.
       
   613 
       
   614 * The :keyword:`while` loop executes as long as the condition (here: ``b < 10``)
       
   615   remains true.  In Python, like in C, any non-zero integer value is true; zero is
       
   616   false.  The condition may also be a string or list value, in fact any sequence;
       
   617   anything with a non-zero length is true, empty sequences are false.  The test
       
   618   used in the example is a simple comparison.  The standard comparison operators
       
   619   are written the same as in C: ``<`` (less than), ``>`` (greater than), ``==``
       
   620   (equal to), ``<=`` (less than or equal to), ``>=`` (greater than or equal to)
       
   621   and ``!=`` (not equal to).
       
   622 
       
   623 * The *body* of the loop is *indented*: indentation is Python's way of grouping
       
   624   statements.  Python does not (yet!) provide an intelligent input line editing
       
   625   facility, so you have to type a tab or space(s) for each indented line.  In
       
   626   practice you will prepare more complicated input for Python with a text editor;
       
   627   most text editors have an auto-indent facility.  When a compound statement is
       
   628   entered interactively, it must be followed by a blank line to indicate
       
   629   completion (since the parser cannot guess when you have typed the last line).
       
   630   Note that each line within a basic block must be indented by the same amount.
       
   631 
       
   632 * The :keyword:`print` statement writes the value of the expression(s) it is
       
   633   given.  It differs from just writing the expression you want to write (as we did
       
   634   earlier in the calculator examples) in the way it handles multiple expressions
       
   635   and strings.  Strings are printed without quotes, and a space is inserted
       
   636   between items, so you can format things nicely, like this::
       
   637 
       
   638      >>> i = 256*256
       
   639      >>> print 'The value of i is', i
       
   640      The value of i is 65536
       
   641 
       
   642   A trailing comma avoids the newline after the output::
       
   643 
       
   644      >>> a, b = 0, 1
       
   645      >>> while b < 1000:
       
   646      ...     print b,
       
   647      ...     a, b = b, a+b
       
   648      ... 
       
   649      1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
       
   650 
       
   651   Note that the interpreter inserts a newline before it prints the next prompt if
       
   652   the last line was not completed.