~malept/ubuntu/lucid/python2.6/dev-dependency-fix

« back to all changes in this revision

Viewing changes to Doc/tutorial/introduction.rst

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-02-13 12:51:00 UTC
  • Revision ID: james.westby@ubuntu.com-20090213125100-uufgcb9yeqzujpqw
Tags: upstream-2.6.1
Import upstream version 2.6.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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.