diff -r 000000000000 -r 8083d21c0020 web/html/ch2intro.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/html/ch2intro.html Mon Jan 25 18:56:45 2010 +0530 @@ -0,0 +1,591 @@ + + + +Chapter 2. Basic Python + + + + + + + + + + +
+
+
+

Table of Contents

+
+
Basic Python
+
+
1. Introduction
+
2. The Python Interpreter
+
+
2.1. The Interactive Interpreter
+
2.2. ipython - An enhanced interactive Python interpreter
+
+
3. Editing and running a python file
+
4. Basic Datatypes and operators in Python
+
+
4.1. Numbers
+
4.2. Variables
+
4.3. Strings
+
4.4. Boolean
+
+
5. The while loop
+
6. The if conditional
+
7. raw_input()
+
8. int() method
+
+
+
+
+
+

+Basic Python

+
+
+ +

This document is intended to be handed out at the end of the workshop. It has +been designed for Engineering students who are Python beginners and have basic +programming skills. The focus is on basic numerics and plotting using Python.

+The system requirements:

Python - version 2.5.x or newer.

IPython

Text editor - scite, vim, emacs or whatever you are comfortable with.

+

+1. Introduction

+

The Python programming language was created by a dutch named Guido van Rossum. +The idea of Python was conceived in December 1989. The name Python has nothing +to do with the reptilian, but its been named after the 70s comedy series +"Monty Python's Flying Circus", since it happens to be Guido's favourite +TV series.

+

Current stable version of Python is 2.6.x, although Python 3.0 is also the stable +version, it is not backwards compatible with the previous versions and is hence +not entirely popular at the moment. This material will focus on the 2.6.x series.

+

Python is licensed under the Python Software Foundation License (PSF License) +which is GPL compatible Free Software license (excepting license version 1.6 and 2.0) +It is a no strings attached license, which means the source code is free to modify +and redistribute.

+

The Python docs define Python as "Python is an interpreted, object-oriented, +high-level programming language with dynamic semantics." A more detailed summary +can be found at

+
+

http://www.python.org/doc/essays/blurb.html
+

. Python is a language that +has been designed to help the programmer concentrate on solving the problem at hand +and not worry about the programming language idiosyncrasies.

+

Python is a highly cross platform compatible language on account of it being an +interpreted language. It is highly scalable and hence has been adapted to run on +the Nokia 60 series phones. Python has been designed to be readable and easy to use

+

Resources available for reference

+

Web:

+
+

http://www.python.org

Doc:

+
+

http://www.python.org/doc
Free Tutorials:

Official Python Tutorial:

+
+

http://docs.python.org/tut/tut.html

Byte of Python:

+
+

http://www.byteofpython.info/

Dive into Python:

+
+

http://diveintopython.org/

Advantages of Python - Why Python??

+

Python has been designed for readability and ease of use. Its been designed in +such a fashion that it imposes readability on the programmer. Python does away +with the braces and the semicolons and instead implements code blocks based on +indentation, thus enhancing readability.

Python is a high level, interpreted, modular and object oriented language. +Python performs memory management on its own, thus the programmer need not bother +about allocating and deallocating memory to variables. Python provides extensibility +by providing modules which can be easily imported similar to headers in C and +packages in Java. Python is object oriented and hence provides all the object oriented +characteristics such as inheritance, encapsulation and polymorphism.

Python offers a highly powerful interactive programming interface in the form +of the 'Interactive Interpreter' which will be discussed in more detail in the +following sections.

Python provides a rich standard library and an extensive set of modules. The +power of Python modules can be seen in this slightly exaggerated cartoon +

+
+

http://xkcd.com/353/

Python interfaces well with most other programming languages such as C, C++ +and FORTRAN.

Although, Python has one setback. Python is not fast as some of the compiled +languages like C or C++. Yet, the amount of flexibility and power more than make +up for this setback.

+
+
+

+2. The Python Interpreter

+
+

+2.1. The Interactive Interpreter

+

Typing python at the shell prompt on any standard Unix/Gnu-Linux system and +hitting the enter key fires up the Python 'Interactive Interpreter'. The Python +interpreter is one of the most integral features of Python. The prompt obtained +when the interactive interpreter is similar to what is shown below. The exact +appearance might differ based on the version of Python being used. The >>> +thing shown is the python prompt. When something is typed at the prompt and the +enter key is hit, the python interpreter interprets the command entered and +performs the appropriate action. All the examples presented in this document are +to be tried hands on, on the interactive interpreter.

+
 Python 2.5.2 (r252:60911, Oct  5 2008, 19:24:49)
+[GCC 4.3.2] on linux2
+Type "help", "copyright", "credits" or "license" for more information.
+>>>
+

Lets try with an example, type print 'Hello, World!' at the prompt and hit +the enter key.

+
 >>> print 'Hello, World!'
+Hello, World!
+

This example was quite straight forward, and thus we have written our first +line of Python code. Now let us try typing something arbitrary at the prompt. +For example:

+
 >>> arbit word
+  File "<stdin>", line 1
+    arbit word
+            ^
+SyntaxError: invalid syntax
+>>>
+

The interpreter gave an error message saying that 'arbit word' was invalid +syntax which is valid. The interpreter is an amazing tool when learning to +program in Python. The interpreter provides a help function that provides the +necessary documentation regarding all Python syntax, constructs, modules and +objects. Typing help() at the prompt gives the following output:

+
 >>> help()
+
+Welcome to Python 2.5!  This is the online help utility.
+
+If this is your first time using Python, you should definitely check out
+the tutorial on the Internet at http://www.python.org/doc/tut/.
+
+Enter the name of any module, keyword, or topic to get help on writing
+Python programs and using Python modules.  To quit this help utility and
+return to the interpreter, just type "quit".
+
+To get a list of available modules, keywords, or topics, type "modules",
+"keywords", or "topics".  Each module also comes with a one-line summary
+of what it does; to list the modules whose summaries contain a given word
+such as "spam", type "modules spam".
+
+help>
+

As mentioned in the output, entering the name of any module, keyword or topic +will provide the documentation and help regarding the same through the online +help utility. Pressing Ctrl+d exits the help prompt and returns to the +python prompt.

+

Let us now try a few examples at the python interpreter.

+

Eg 1:

+
 >>> print 'Hello, python!'
+Hello, python!
+>>>
+

Eg 2:

+
 >>> print 4321*567890
+2453852690
+>>>
+

Eg 3:

+
 >>> 4321*567890
+2453852690L
+>>>
+
 Note: Notice the 'L' at the end of the output. The 'L' signifies that the
+output of the operation is of type *long*. It was absent in the previous
+example because we used the print statement. This is because *print* formats
+the output before displaying.
+

Eg 4:

+
 >>> big = 12345678901234567890 ** 3
+>>> print big
+1881676372353657772490265749424677022198701224860897069000
+>>>
+
 This example is to show that unlike in C or C++ there is no limit on the
+value of an integer.
+

Try this on the interactive interpreter: +import this

+

Hint: The output gives an idea of Power of Python

+
+
+

+2.2. ipython - An enhanced interactive Python interpreter

+

The power and the importance of the interactive interpreter was the highlight +of the previous section. This section provides insight into the enhanced +interpreter with more advanced set of features called ipython. Entering +ipython at the shell prompt fires up the interactive interpreter.

+
 $ ipython
+Python 2.5.2 (r252:60911, Oct  5 2008, 19:24:49)
+Type "copyright", "credits" or "license" for more information.
+
+IPython 0.8.4 -- An enhanced Interactive Python.
+?         -> Introduction and overview of IPython's features.
+%quickref -> Quick reference.
+help      -> Python's own help system.
+object?   -> Details about 'object'. ?object also works, ?? prints more.
+
+In [1]:
+

This is the output obtained upon firing ipython. The exact appearance may +change based on the Python version installed. The following are some of the +various features provided by ipython:

+

Suggestions - ipython provides suggestions of the possible methods and +operations available for the given python object.

Eg 5:

+
 In [4]: a = 6
+
+In [5]: a.
+a.__abs__           a.__divmod__        a.__index__         a.__neg__          a.__rand__          a.__rmod__          a.__rxor__
+a.__add__           a.__doc__           a.__init__          a.__new__          a.__rdiv__          a.__rmul__          a.__setattr__
+a.__and__           a.__float__         a.__int__           a.__nonzero__      a.__rdivmod__       a.__ror__           a.__str__
+a.__class__         a.__floordiv__      a.__invert__        a.__oct__          a.__reduce__        a.__rpow__          a.__sub__
+a.__cmp__           a.__getattribute__  a.__long__          a.__or__           a.__reduce_ex__     a.__rrshift__       a.__truediv__
+a.__coerce__        a.__getnewargs__    a.__lshift__        a.__pos__          a.__repr__          a.__rshift__        a.__xor__
+a.__delattr__       a.__hash__          a.__mod__           a.__pow__          a.__rfloordiv__     a.__rsub__
+a.__div__           a.__hex__           a.__mul__           a.__radd__         a.__rlshift__       a.__rtruediv__
+

In this example, we initialized 'a' (a variable - a concept that will be +discussed in the subsequent sections.) to 6. In the next line when the tab key +is pressed after typing 'a.' ipython displays the set of all possible methods +that are applicable on the object 'a' (an integer in this context). Ipython +provides many such datatype specific features which will be presented in the +further sections as and when the datatypes are introduced.

+
+
+
+

+3. Editing and running a python file

+

The previous sections focused on the use of the interpreter to run python code. +While the interpeter is an excellent tool to test simple solutions and +experiment with small code snippets, its main disadvantage is that everything +written in the interpreter is lost once its quit. Most of the times a program is +used by people other than the author. So the programs have to be available in +some form suitable for distribution, and hence they are written in files. This +section will focus on editing and running python files. Start by opening a text +editor ( it is recommended you choose one from the list at the top of this page ). +In the editor type down python code and save the file with an extension .py +(python files have an extension of .py). Once done with the editing, save the +file and exit the editor.

+

Let us look at a simple example of calculating the gcd of 2 numbers using Python:

+

Creating the first python script(file)

+
 $ emacs gcd.py
+  def gcd(x,y):
+    if x % y == 0:
+      return y
+    return gcd(y, x%y)
+
+  print gcd(72, 92)
+

To run the script, open the shell prompt, navigate to the directory that +contains the python file and run python <filename.py> at the prompt ( in this +case filename is gcd.py )

+

Running the python script

+
 $ python gcd.py
+4
+$
+

Another method to run a python script would be to include the line

+

#! /usr/bin/python

+

at the beginning of the python file and then make the file executable by

+

$ chmod a+x filename.py

+

Once this is done, the script can be run as a standalone program as follows:

+

$ ./filename.py

+
+
+

+4. Basic Datatypes and operators in Python

+

Python provides the following set of basic datatypes.

+

Numbers: int, float, long, complex

Strings

Boolean

+

+4.1. Numbers

+

Numbers were introduced in the examples presented in the interactive interpreter +section. Numbers include types as mentioned earlier viz., int (integers), float +(floating point numbers), long (large integers), complex (complex numbers with +real and imaginary parts). Python is not a strongly typed language, which means +the type of a variable need not mentioned during its initialization. Let us look +at a few examples.

+

Eg 6:

+
 >>> a = 1 #here a is an integer variable
+

Eg 7:

+
 >>> lng = 122333444455555666666777777788888888999999999 #here lng is a variable of type long
+>>> lng
+122333444455555666666777777788888888999999999L #notice the trailing 'L'
+>>> print lng
+122333444455555666666777777788888888999999999 #notice the absence of the trailing 'L'
+>>> lng+1
+122333444455555666666777777788888889000000000L
+

Long numbers are the same as integers in almost all aspects. They can be used in +operations just like integers and along with integers without any distinction. +The only distinction comes during type checking (which is not a healthy practice). +Long numbers are tucked with a trailing 'L' just to signify that they are long. +Notice that in the example just lng at the prompt displays the value of the variable +with the 'L' whereas print lng displays without the 'L'. This is because print +formats the output before printing. Also in the example, notice that adding an +integer to a long does not give any errors and the result is as expected. So for +all practical purposes longs can be treated as ints.

+

Eg 8:

+
 >>> fl = 3.14159 #fl is a float variable
+>>> e = 1.234e-4 #e is also a float variable, specified in the exponential form
+>>> a = 1
+>>> b = 2
+>>> a/b #integer division
+0
+>>> a/fl #floating point division
+0.31831015504887655
+>>> e/fl
+3.9279473133031364e-05
+

Floating point numbers, simply called floats are real numbers with a decimal point. +The example above shows the initialization of a float variable. Shown also in this +example is the difference between integer division and floating point division. +'a' and 'b' here are integer variables and hence the division gives 0 as the quotient. +When either of the operands is a float, the operation is a floating point division, +and the result is also a float as illustrated.

+

Eg 9:

+
 >>> cplx = 3 + 4j #cplx is a complex variable
+>>> cplx
+(3+4j)
+>>> print cplx.real #prints the real part of the complex number
+3.0
+>>> print cplx.imag #prints the imaginary part of the complex number
+4.0
+>>> print cplx*fl  #multiplies the real and imag parts of the complex number with the multiplier
+(9.42477+12.56636j)
+>>> abs(cplx) #returns the absolute value of the complex number
+5.0
+

Python provides a datatype for complex numbers. Complex numbers are initialized +as shown in the example above. The real and imag operators return the real and +imaginary parts of the complex number as shown. The abs() returns the absolute +value of the complex number.

+
+
+

+4.2. Variables

+

Variables are just names that represent a value. Variables have already been +introduced in the various examples from the previous sections. Certain rules about +using variables:

+

Variables have to be initialized or assigned a value before being used.

Variable names can consist of letters, digits and underscores(_).

Variable names cannot begin with digits, but can contain digits in them.

In reference to the previous section examples, 'a', 'b', 'lng', 'fl', 'e' and 'cplx' +are all variables of various datatypes.

+
 Note: Python is not a strongly typed language and hence an integer variable can at a
+later stage be used as a float variable as well.
+
+
+

+4.3. Strings

+

Strings are one of the essential data structures of any programming language. +The print "Hello, World!" program was introduced in the earlier section, and +the "Hello, World!" in the print statement is a string. A string is basically +a set of characters. Strings can be represented in various ways shown below:

+
 s = 'this is a string'              # a string variable can be represented using single quotes
+s = 'This one has "quotes" inside!' # The string can have quotes inside it as shown
+s = "I have 'single-quotes' inside!"
+l = "A string spanning many lines\
+one more line\
+yet another"                        # a string can span more than a single line.
+t = """A triple quoted string does  # another way of representing multiline strings.
+not need to be escaped at the end and
+"can have nested quotes" etc."""
+

Try the following on the interpreter: +s = 'this is a string with 'quotes' of similar kind'

+

Exercise: How to use single quotes within single quotes in a string as shown +in the above example without getting an error?

+
+

+4.3.1. String operations

+

A few basic string operations are presented here.

+

String concatenation +String concatenation is done by simple addition of two strings.

+
 >>> x = 'Hello'
+>>> y = ' Python'
+>>> print x+y
+Hello Python
+

Try this yourself:

+
 >>> somenum = 13
+>>> print x+somenum
+

The problem with the above example is that here a string variable and an integer +variable are trying to be concantenated. To obtain the desired result from the +above example the str(), repr() and the `` can be used.

+

str() simply converts a value to a string in a reasonable form. +repr() creates a string that is a representation of the value.

+

The difference can be seen in the example shown below:

+
 >>> str(1000000000000000000000000000000000000000000000000L)
+'1000000000000000000000000000000000000000000000000'
+>>> repr(1000000000000000000000000000000000000000000000000L)
+'1000000000000000000000000000000000000000000000000L'
+

It can be observed that the 'L' in the long value shown was omitted by str(), +whereas repr() converted that into a string too. An alternative way of using +repr(value) is `value`.

+

A few more examples:

+
 >>> x = "Let's go \nto Pycon"
+>>> print x
+Let's go
+to Pycon
+

In the above example, notice that the 'n'(newline) character is formatted and +the string is printed on two lines. The strings discussed until now were normal +strings. Other than these there are two other types of strings namely, raw strings +and unicode strings.

+

Raw strings are strings which are unformatted, that is the backslashes() are +not parsed and are left as it is in the string. Raw strings are represented with +an 'r' at the start of a string. +Let us look at an example

+
 >>> x = r"Let's go \nto Pycon"
+>>> print x
+Let's go \nto Pycon
+

Note: The 'n' is not being parsed into a new line and is left as it is.

+

Try this yourself:

+
 >>> x = r"Let's go to Pycon\"
+

Unicode strings are strings where the characters are Unicode characters as +opposed to ASCII characters. Unicode strings are represented with a 'u' at the +start of the string. +Let us look at an example:

+
 >>> x = u"Let's go to Pycon!"
+>>> print x
+Let's go to Pycon!
+
+
+
+

+4.4. Boolean

+

Python also provides special Boolean datatype. A boolean variable can assume a +value of either True or False (Note the capitalizations).

+

Let us look at examples:

+
 >>> t = True
+>>> f = not t
+>>> print f
+False
+>>> f or t
+True
+>>> f and t
+False
+
+
+
+

+5. The while loop

+

The Python while loop is similar to the C/C++ while loop. The syntax is as +follows:

+
 statement 0
+while condition:
+  statement 1 #while block
+  statement 2 #while block
+statement 3 #outside the while block.
+

Let us look at an example:

+
 >>> x = 1
+>>> while x <= 5:
+...   print x
+...   x += 1
+...
+1
+2
+3
+4
+5
+
+
+

+6. The if conditional

+

The Python if block provides the conditional execution of statements. +If the condition evaluates as true the block of statements defined under the if +block are executed.

+

If the first block is not executed on account of the condition not being satisfied, +the set of statements in the else block are executed.

+

The elif block provides the functionality of evaluation of multiple conditions +as shown in the example.

+

The syntax is as follows:

+
 if condition :
+    statement_1
+    statement_2
+
+elif condition:
+    statement_3
+    statement_4
+else:
+    statement_5
+    statement_6
+

Let us look at an example:

+
 >>> n = raw_input("Input a number:")
+>>> if n < 0:
+      print n," is negative"
+      elif n > 0:
+      print n," is positive"
+      else:
+      print n, " is 0"
+
+
+

+7. raw_input() +

+

In the previous example we saw the call to the raw_input() subroutine. +The raw_input() method is used to take user inputs through the console. +Unlike input() which assumes the data entered by the user as a standard python +expression, raw_input() treats all the input data as raw data and converts +everything into a string. To illustrate this let us look at an example.

+
 >>> input("Enter a number thats a palindrome:")
+Enter a number thats a palindrome:121
+121
+
+>>> input("Enter your name:")
+Enter your name:PythonFreak
+Traceback (most recent call last):
+  File "<stdin>", line 1, in <module>
+  File "<string>", line 1, in <module>
+NameError: name 'PythonFreak' is not defined
+

As shown above the input() assumes that the data entered is a valid Python +expression. In the first call it prompts for an integer input and when entered +it accepts the integer as an integer, whereas in the second call, when the string +is entered without the quotes, input() assumes that the entered data is a valid +Python expression and hence it raises and exception saying PythonFreak is not +defined.

+
 >>> input("Enter your name:")
+Enter your name:'PythonFreak'
+'PythonFreak'
+>>>
+

Here the name is accepted because its entered as a string (within quotes). But +its unreasonable to go on using quotes each time a string is entered. Hence the +alternative is to use raw_input().

+

Let us now look at how raw_input() operates with an example.

+
 >>> raw_input("Enter your name:")
+Enter your name:PythonFreak
+'PythonFreak'
+

Observe that the raw_input() is converting it into a string all by itself.

+
 >>> pal = raw_input("Enter a number thats a palindrome:")
+Enter a number thats a palindrome:121
+'121'
+

Observe that raw_input() is converting the integer 121 also to a string as +'121'. Let us look at another example:

+
 >>> pal = raw_input("Enter a number thats a palindrome:")
+Enter a number thats a palindrome:121
+>>> pal + 2
+Traceback (most recent call last):
+  File "<stdin>", line 1, in <module>
+TypeError: cannot concatenate 'str' and 'int' objects
+>>> pal
+'121'
+

Observe here that the variable pal is a string and hence integer operations +cannot be performed on it. Hence the exception is raised.

+
+
+

+8. int() method

+

Generally for computing purposes, the data used is not strings or raw data but +on integers, floats and similar mathematical data structures. The data obtained +from raw_input() is raw data in the form of strings. In order to obtain integers +from strings we use the method int().

+

Let us look at an example.

+
 >>> intpal = int(pal)
+>>> intpal
+121
+

In the previous example it was observed that pal was a string variable. Here +using the int() method the string pal was converted to an integer variable.

+

Try This Yourself:

+
 >>> stringvar = raw_input("Enter a name:")
+Enter a name:Guido Van Rossum
+>>> stringvar
+'Guido Van Rossum'
+>>> numvar = int(stringvar)
+
+
+
+