SlideShare a Scribd company logo
Learn Python The Hard Way


                   Utkarsh Sengar




  Contents taken from © Copyright 2010, Zed A. Shaw.
Resources
• Learn Python The Hard Way, 2nd Edition
  – http://bit.ly/python-lug (Free online)
  – Paperback book costs $15.99
  – http://learncodethehardway.org
• Google python class:
  – http://code.google.com/edu/languages/google-
    python-class/
• MIT Open courseware:
  – http://academicearth.org/courses/introduction-to-
    computer-science-and-programming
It’s Easy.
 5 most important things:
  – Do Not Copy-Paste
  – Code
  – Practice
  – Practice
  – Practice
Prerequisites
 Python v2.5 +
   python

 Any text editor.
   gEdit (Linux)
   TextMate (OSX)

 Settings
   Tabs Width: 4
   Insert spaces instead of tabs

 Your Mind.
TODO: today
   Total of 52 chapters
   We will cover: 1-22, 28-35, 39-42
   Basic constructs, data structures, OOP
   Solve two simple python problems.

 Homework: Another problem. What did you think?
Lets code…..
       etherPad
http://ip-address:9001
But first……..Pip, pep8, iPython
• pip install simplejson
  – For python packages in Python package index
• pep8 script.py
  – Python style guide. Your best friend
• Python Easter egg
  – import this
• Ipython
• Open pydocs :
  docs.python.org/library/index.html
comments

   Single line comments only
   '#' (an octothorpe) notifies beginning
   Ends with a newline
Printing statements

   print is builtin function
   Usage: print ”Hello, world!”
   Appends a newline automatically
   To avoid new line, use a comma (,)
   Usage: print ”Hello”,
            print ”roopesh”
Basic math

   * / % + - < > <= >=
   Same as C operator precedence
   / does a integer division
   Example:
       print "Hens", 25 + 30 / 6
       print 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
       print "What is 5 - 7?", 5 – 7
       print "Is it greater or equal?", 5 >= -2
More operators

• Basic ones: + - * / %
• Try:
  – x // y
  – abs(x)
  – int(x), long(x), float(x)
  – complex(re, im)
  – c.conjugate()
  – pow(x, y) or x ** y
variables

   No need of types
   Duck typing
       cars = 100
       space_in_car = 4.0
       result = cars + space_in_car
       cars_not_driven = cars
   Can assign one var to another
   Tip: type(cars)
Variables and printing

   Can use placeholders in print statements
       print ”let's talk about %s” % my_name
       print "There are %d types of people." % 10
       print "Those who know %s and those who %s." %
        (binary, do_not)
   Also can use names for placeholders
       print ”my name is %(name)s” % {'name':
        my_name}
Text (String)

   There are 3 types of notation
   Single quotes, double quotes, multiline text
   Multiline text stores the text, whitespaces and escape
    characters as well
       val = ’hello world’
       val = ”hello again!”
       val = ”Hello n
         World 
         !!”
       val = ”””no need to ’escape’ anything – ”ok?” ”””
       Interesting functions:
        upper(), lower(), title(), swapcase(),strip()
Booleans

   True and False
   Can use in print with placeholders as well
   Anything that has a value is true, anything like
    0, zero length string, zero length list or dictionary
    is false
   val = ’Hi my friend’
    if val:
       print ”yo!”
   If ’Hi’ in val:
        print ’this keeps getting better!’
Input

   There are two functions: input(), raw_input()
   raw_input() contains string and input() could
    contain object
       first = raw_input("Please enter your age ")
        second = input("Please enter your age again")
       print "You said you are", first
        print "Then you said you are", second
       Try again, pass 40+2 in second
Working with python prog files

   Any arguments passed to python prog files is
    stored in argv
   Zero based arguments, first one is always
    script name
       import sys
        print sys.argv[0]
        print sys.argv[1]
       Run: python file.py 4
Working with files
   open(filename, mode) : returns file handle
   read() : to read the whole file
   readline() and readlines(): to read each line
   write(data) : writes to file
   close() : to close the file handle
       from sys import argv
        script, filename = argv
        txt = open(filename, 'r+') #r or w
        print "Here's your script %r:" % script
        print "Here's your file %r:" % filename
        print txt.read()
        txt.write('42')
        txt.close()
functions

   def keyword to declare a function
   Arguments don't need function type
   Can skip return value
   No return implies it returns a None value
       Always do: x is None and not, x == None
       None is similar to null
   To take unlimited number of arguments: use *arg
    as argument, it is packing method for arguments
functions cont…

   def print_none():pass
   def print_one(arg1):
        print ”got one arg: %s” % arg1
   def print_two(arg1, arg2):
        print ”got two args: %s, %s” %(arg1, arg2)
   def print_two_2(*args):
        print args
        return args
Logics

   and, or, not, ==, !=, >, >=, <, <=
   and returns last value which makes the
    statement true
   or returns first value which makes the
    statement false
   Both are short-circuit operator
       test = True
        result = test and 'Test is True' or 'Test is False'
Data Structures

   List: [1, 2, 3, 2]
   Tuples: (1, 2, 3, 2)
   Set: {1,2,3}
   Dictionary: {’name’ : ’utkarsh’, ’age’ : 42}
Lists and loops

   Lists: [1, 2, 3]
       append(elem), extend(list), insert(idx, elem), rem
        ove(x), pop(i), count(i), sort(), reverse(),len(l)
   Tuples: (1, 2, 3)
   Difference:
       lists are mutable,
       tuples are immutable
       Ideally lists should have same data types
Lists and loops

   for element in list:
        print element
   for i in range(i):
        print i
   for i, val in enumerate(list):
        print i, val
   sorted_list = sorted(list)
   sort(list)
   List comprehensions for ease of use (later..)
Lists and loops

   Lists from strings:
       a = ”A B C D E F”.split()
        #['A', 'B', 'C', 'D', 'E', 'F’]
        a.pop()
        ' '.join(a) #joins lists to form a string
   List slicing: list[start:end]
       a[0:len(a)]
       a[:4]
       a[3:]
       a[-1]
Dictionaries

   {'name': 'Roopesh’, ’age’ : 42}
   Key-value pairs / lookup table
   Can be accessed with a['name']
   Can add new values with same syntax
        a['city'] = 'San Jose'
   Can remove an item with 'del'
        del a['city']
   Add a bunch using: dict.update(another_dict)
Classes and Objects

   Class keyword, inherits from object
   Constructor: def __init__
   All methods take first arg as the instance of
    class
   Denoted with word 'self'
   Any number of args have to follow self
          def func(self, val)
Classes and Objects

   Instantiating classes with ClassName() syntax
   There is no 'new' keyword
   Some examples in code given.
   To override operators, override functions like
    __eq__, __lt__, __gt__, __lte__ etc
Class example
class MyClass:
   answer = 42
   def a_method(self):
     print “I am a method”

instance = MyClass ()
instance.a_method()
hasattr(MyClass, “answer”)
List comprehensions (bonus)

   [each for each in range(100) if each % 2 == 0]
   [some_func(each) for each in range(100)]
   iter(list) produces a list iterator
   Gives ability to get next item with
    iterator.next()
   When iterator gets exhausted, it produces
    StopIteration exception
Handling Exceptions

Try:
    … do some handling
except Error as e:
    print e
finally:
    … do some final clean up
Problem 1

Write a function char_freq() that takes a string
and builds a frequency listing of the characters
contained in it. Represent the frequency listing
as a Python dictionary.

Try it with something like
char_freq("abbabcbdbabdbdbabababcbcbab”)
Problem 2
In cryptography, a Caesar cipher is a very simple encryption techniques in which each
letter in the plain text is replaced by a letter some fixed number of positions down the
alphabet. For example, with a shift of 3, A would be replaced by D, B would become
E, and so on. The method is named after Julius Caesar, who used it to communicate
with his generals. ROT-13 ("rotate by 13 places") is a widely used example of a Caesar
cipher where the shift is 13. In Python, the key for ROT-13 may be represented by
means of the following dictionary:

key =
{'a':'n', 'b':'o', 'c':'p', 'd':'q', 'e':'r', 'f':'s', 'g':'t', 'h':'u', 'i':'v', 'j':'w', 'k':'x', 'l':'y', 'm':'z', 'n':'
a', 'o':'b', 'p':'c', 'q':'d', 'r':'e', 's':'f', 't':'g', 'u':'h', 'v':'i', 'w':'j', 'x':'k', 'y':'l', 'z':'m', 'A':'N', '
B':'O', 'C':'P', 'D':'Q', 'E':'R', 'F':'S', 'G':'T', 'H':'U', 'I':'V', 'J':'W', 'K':'X', 'L':'Y', 'M':'Z', 'N':'A'
, 'O':'B', 'P':'C', 'Q':'D', 'R':'E', 'S':'F', 'T':'G', 'U':'H', 'V':'I', 'W':'J', 'X':'K', 'Y':'L', 'Z':'M'}

Your task in this exercise is to implement an encoder/decoder of ROT-13. Once you're
done, you will be able to read the following secret message:

Pnrfne pvcure? V zhpu cersre Pnrfne fnynq!
Homework


 Integer to Roman
numerals converter
Want more?
• Go here:
  – 15 Exercises to Know A Programming Language:
    Part 1
  – http://www.knowing.net/index.php/2006/06/16/
    15-exercises-to-know-a-programming-language-
    part-1
A lot more…
   List comprehensions, decorators, lambda
functions, effective unit tests, network and web
                  programming,

           Some popular modules like
urlib, simplejson, ElementTree and lxml for xml
parsing, SQLAlchemy, sciPy, NumPy, mechanize
At the end……
“I'll say that learning to create software changes
you and makes you different. Not better or
worse, just different.”

“The world needs more weird people who know
how things work and who love to figure it all out.”

                                                            ~ Zed Shaw

Source: http://learnpythonthehardway.org/book/advice.html

More Related Content

What's hot (20)

PPTX
Python - Data Structures
NR Computer Learning Center
 
PDF
Python Variable Types, List, Tuple, Dictionary
Soba Arjun
 
PPTX
Python programming
Ashwin Kumar Ramasamy
 
PPTX
Python dictionary
Sagar Kumar
 
PDF
Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Edureka!
 
PPTX
Full Python in 20 slides
rfojdar
 
PPTX
Introduction to Python programming
Damian T. Gordon
 
PPTX
Loops in c programming
CHANDAN KUMAR
 
PPT
Introduction to Python - Part Two
amiable_indian
 
PPTX
Python basics
RANAALIMAJEEDRAJPUT
 
PDF
Python basic
Saifuddin Kaijar
 
PPTX
Python basics
Hoang Nguyen
 
PPTX
Python in 30 minutes!
Fariz Darari
 
PPTX
Python programing
hamzagame
 
PDF
Python Basics
tusharpanda88
 
PDF
Python Dictionary
Soba Arjun
 
PDF
Python Modules
Soba Arjun
 
PPTX
Lecture Introduction to Python 2024.pptx
fgbcssarl
 
PDF
Python functions
Learnbay Datascience
 
Python - Data Structures
NR Computer Learning Center
 
Python Variable Types, List, Tuple, Dictionary
Soba Arjun
 
Python programming
Ashwin Kumar Ramasamy
 
Python dictionary
Sagar Kumar
 
Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Edureka!
 
Full Python in 20 slides
rfojdar
 
Introduction to Python programming
Damian T. Gordon
 
Loops in c programming
CHANDAN KUMAR
 
Introduction to Python - Part Two
amiable_indian
 
Python basics
RANAALIMAJEEDRAJPUT
 
Python basic
Saifuddin Kaijar
 
Python basics
Hoang Nguyen
 
Python in 30 minutes!
Fariz Darari
 
Python programing
hamzagame
 
Python Basics
tusharpanda88
 
Python Dictionary
Soba Arjun
 
Python Modules
Soba Arjun
 
Lecture Introduction to Python 2024.pptx
fgbcssarl
 
Python functions
Learnbay Datascience
 

Similar to Python Workshop - Learn Python the Hard Way (20)

PPTX
Keep it Stupidly Simple Introduce Python
SushJalai
 
PDF
Presentation pythonpppppppppppppppppppppppppppppppppyyyyyyyyyyyyyyyyyyytttttt...
manikbuma
 
PDF
Python Cheatsheet_A Quick Reference Guide for Data Science.pdf
zayanchutiya
 
PPTX
Introduction to learn and Python Interpreter
Alamelu
 
PPTX
Improve Your Edge on Machine Learning - Day 1.pptx
CatherineVania1
 
PDF
Introduction to Python
UC San Diego
 
PDF
Python_Cheat_Sheet_Keywords_1664634397.pdf
sagar414433
 
PDF
Python_Cheat_Sheet_Keywords_1664634397.pdf
sagar414433
 
PPTX
Introduction to Python 01-08-2023.pon by everyone else. . Hence, they must be...
DRVaibhavmeshram1
 
PPTX
Introduction to Python , Overview
NB Veeresh
 
PPTX
GE8151 Problem Solving and Python Programming
Muthu Vinayagam
 
PDF
Introduction to Python for Plone developers
Jim Roepcke
 
PPTX
Python programming workshop
BAINIDA
 
PPTX
Python basics
Young Alista
 
PPTX
Python basics
Harry Potter
 
PPTX
Python basics
Fraboni Ec
 
PPTX
Python basics
James Wong
 
PPTX
Python basics
Tony Nguyen
 
PPTX
Python basics
Luis Goldster
 
PPTX
Chapter 2 Python Language Basics, IPython.pptx
SovannDoeur
 
Keep it Stupidly Simple Introduce Python
SushJalai
 
Presentation pythonpppppppppppppppppppppppppppppppppyyyyyyyyyyyyyyyyyyytttttt...
manikbuma
 
Python Cheatsheet_A Quick Reference Guide for Data Science.pdf
zayanchutiya
 
Introduction to learn and Python Interpreter
Alamelu
 
Improve Your Edge on Machine Learning - Day 1.pptx
CatherineVania1
 
Introduction to Python
UC San Diego
 
Python_Cheat_Sheet_Keywords_1664634397.pdf
sagar414433
 
Python_Cheat_Sheet_Keywords_1664634397.pdf
sagar414433
 
Introduction to Python 01-08-2023.pon by everyone else. . Hence, they must be...
DRVaibhavmeshram1
 
Introduction to Python , Overview
NB Veeresh
 
GE8151 Problem Solving and Python Programming
Muthu Vinayagam
 
Introduction to Python for Plone developers
Jim Roepcke
 
Python programming workshop
BAINIDA
 
Python basics
Young Alista
 
Python basics
Harry Potter
 
Python basics
Fraboni Ec
 
Python basics
James Wong
 
Python basics
Tony Nguyen
 
Python basics
Luis Goldster
 
Chapter 2 Python Language Basics, IPython.pptx
SovannDoeur
 
Ad

More from Utkarsh Sengar (7)

PPT
Perl 101 - The Basics of Perl Programming
Utkarsh Sengar
 
PPT
Linux Interview Questions Quiz
Utkarsh Sengar
 
PPT
Begin With Linux Basics
Utkarsh Sengar
 
PPT
Linux Commands
Utkarsh Sengar
 
PPT
Linux User Group @ SJSU Meeting#1
Utkarsh Sengar
 
PPT
Hackers The Anarchists Of Our Time
Utkarsh Sengar
 
PPTX
SharePoint in Enterprise Collaboration (Education)
Utkarsh Sengar
 
Perl 101 - The Basics of Perl Programming
Utkarsh Sengar
 
Linux Interview Questions Quiz
Utkarsh Sengar
 
Begin With Linux Basics
Utkarsh Sengar
 
Linux Commands
Utkarsh Sengar
 
Linux User Group @ SJSU Meeting#1
Utkarsh Sengar
 
Hackers The Anarchists Of Our Time
Utkarsh Sengar
 
SharePoint in Enterprise Collaboration (Education)
Utkarsh Sengar
 
Ad

Recently uploaded (20)

PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 

Python Workshop - Learn Python the Hard Way

  • 1. Learn Python The Hard Way Utkarsh Sengar Contents taken from © Copyright 2010, Zed A. Shaw.
  • 2. Resources • Learn Python The Hard Way, 2nd Edition – http://bit.ly/python-lug (Free online) – Paperback book costs $15.99 – http://learncodethehardway.org • Google python class: – http://code.google.com/edu/languages/google- python-class/ • MIT Open courseware: – http://academicearth.org/courses/introduction-to- computer-science-and-programming
  • 3. It’s Easy.  5 most important things: – Do Not Copy-Paste – Code – Practice – Practice – Practice
  • 4. Prerequisites  Python v2.5 +  python  Any text editor.  gEdit (Linux)  TextMate (OSX)  Settings  Tabs Width: 4  Insert spaces instead of tabs  Your Mind.
  • 5. TODO: today  Total of 52 chapters  We will cover: 1-22, 28-35, 39-42  Basic constructs, data structures, OOP  Solve two simple python problems.  Homework: Another problem. What did you think?
  • 6. Lets code….. etherPad http://ip-address:9001
  • 7. But first……..Pip, pep8, iPython • pip install simplejson – For python packages in Python package index • pep8 script.py – Python style guide. Your best friend • Python Easter egg – import this • Ipython • Open pydocs : docs.python.org/library/index.html
  • 8. comments  Single line comments only  '#' (an octothorpe) notifies beginning  Ends with a newline
  • 9. Printing statements  print is builtin function  Usage: print ”Hello, world!”  Appends a newline automatically  To avoid new line, use a comma (,)  Usage: print ”Hello”, print ”roopesh”
  • 10. Basic math  * / % + - < > <= >=  Same as C operator precedence  / does a integer division  Example:  print "Hens", 25 + 30 / 6  print 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6  print "What is 5 - 7?", 5 – 7  print "Is it greater or equal?", 5 >= -2
  • 11. More operators • Basic ones: + - * / % • Try: – x // y – abs(x) – int(x), long(x), float(x) – complex(re, im) – c.conjugate() – pow(x, y) or x ** y
  • 12. variables  No need of types  Duck typing  cars = 100  space_in_car = 4.0  result = cars + space_in_car  cars_not_driven = cars  Can assign one var to another  Tip: type(cars)
  • 13. Variables and printing  Can use placeholders in print statements  print ”let's talk about %s” % my_name  print "There are %d types of people." % 10  print "Those who know %s and those who %s." % (binary, do_not)  Also can use names for placeholders  print ”my name is %(name)s” % {'name': my_name}
  • 14. Text (String)  There are 3 types of notation  Single quotes, double quotes, multiline text  Multiline text stores the text, whitespaces and escape characters as well  val = ’hello world’  val = ”hello again!”  val = ”Hello n World !!”  val = ”””no need to ’escape’ anything – ”ok?” ”””  Interesting functions: upper(), lower(), title(), swapcase(),strip()
  • 15. Booleans  True and False  Can use in print with placeholders as well  Anything that has a value is true, anything like 0, zero length string, zero length list or dictionary is false  val = ’Hi my friend’ if val: print ”yo!”  If ’Hi’ in val: print ’this keeps getting better!’
  • 16. Input  There are two functions: input(), raw_input()  raw_input() contains string and input() could contain object  first = raw_input("Please enter your age ") second = input("Please enter your age again")  print "You said you are", first print "Then you said you are", second  Try again, pass 40+2 in second
  • 17. Working with python prog files  Any arguments passed to python prog files is stored in argv  Zero based arguments, first one is always script name  import sys print sys.argv[0] print sys.argv[1]  Run: python file.py 4
  • 18. Working with files  open(filename, mode) : returns file handle  read() : to read the whole file  readline() and readlines(): to read each line  write(data) : writes to file  close() : to close the file handle  from sys import argv script, filename = argv txt = open(filename, 'r+') #r or w print "Here's your script %r:" % script print "Here's your file %r:" % filename print txt.read() txt.write('42') txt.close()
  • 19. functions  def keyword to declare a function  Arguments don't need function type  Can skip return value  No return implies it returns a None value  Always do: x is None and not, x == None  None is similar to null  To take unlimited number of arguments: use *arg as argument, it is packing method for arguments
  • 20. functions cont…  def print_none():pass  def print_one(arg1): print ”got one arg: %s” % arg1  def print_two(arg1, arg2): print ”got two args: %s, %s” %(arg1, arg2)  def print_two_2(*args): print args return args
  • 21. Logics  and, or, not, ==, !=, >, >=, <, <=  and returns last value which makes the statement true  or returns first value which makes the statement false  Both are short-circuit operator  test = True result = test and 'Test is True' or 'Test is False'
  • 22. Data Structures  List: [1, 2, 3, 2]  Tuples: (1, 2, 3, 2)  Set: {1,2,3}  Dictionary: {’name’ : ’utkarsh’, ’age’ : 42}
  • 23. Lists and loops  Lists: [1, 2, 3]  append(elem), extend(list), insert(idx, elem), rem ove(x), pop(i), count(i), sort(), reverse(),len(l)  Tuples: (1, 2, 3)  Difference:  lists are mutable,  tuples are immutable  Ideally lists should have same data types
  • 24. Lists and loops  for element in list: print element  for i in range(i): print i  for i, val in enumerate(list): print i, val  sorted_list = sorted(list)  sort(list)  List comprehensions for ease of use (later..)
  • 25. Lists and loops  Lists from strings:  a = ”A B C D E F”.split() #['A', 'B', 'C', 'D', 'E', 'F’] a.pop() ' '.join(a) #joins lists to form a string  List slicing: list[start:end]  a[0:len(a)]  a[:4]  a[3:]  a[-1]
  • 26. Dictionaries  {'name': 'Roopesh’, ’age’ : 42}  Key-value pairs / lookup table  Can be accessed with a['name']  Can add new values with same syntax a['city'] = 'San Jose'  Can remove an item with 'del' del a['city']  Add a bunch using: dict.update(another_dict)
  • 27. Classes and Objects  Class keyword, inherits from object  Constructor: def __init__  All methods take first arg as the instance of class  Denoted with word 'self'  Any number of args have to follow self def func(self, val)
  • 28. Classes and Objects  Instantiating classes with ClassName() syntax  There is no 'new' keyword  Some examples in code given.  To override operators, override functions like __eq__, __lt__, __gt__, __lte__ etc
  • 29. Class example class MyClass: answer = 42 def a_method(self): print “I am a method” instance = MyClass () instance.a_method() hasattr(MyClass, “answer”)
  • 30. List comprehensions (bonus)  [each for each in range(100) if each % 2 == 0]  [some_func(each) for each in range(100)]  iter(list) produces a list iterator  Gives ability to get next item with iterator.next()  When iterator gets exhausted, it produces StopIteration exception
  • 31. Handling Exceptions Try: … do some handling except Error as e: print e finally: … do some final clean up
  • 32. Problem 1 Write a function char_freq() that takes a string and builds a frequency listing of the characters contained in it. Represent the frequency listing as a Python dictionary. Try it with something like char_freq("abbabcbdbabdbdbabababcbcbab”)
  • 33. Problem 2 In cryptography, a Caesar cipher is a very simple encryption techniques in which each letter in the plain text is replaced by a letter some fixed number of positions down the alphabet. For example, with a shift of 3, A would be replaced by D, B would become E, and so on. The method is named after Julius Caesar, who used it to communicate with his generals. ROT-13 ("rotate by 13 places") is a widely used example of a Caesar cipher where the shift is 13. In Python, the key for ROT-13 may be represented by means of the following dictionary: key = {'a':'n', 'b':'o', 'c':'p', 'd':'q', 'e':'r', 'f':'s', 'g':'t', 'h':'u', 'i':'v', 'j':'w', 'k':'x', 'l':'y', 'm':'z', 'n':' a', 'o':'b', 'p':'c', 'q':'d', 'r':'e', 's':'f', 't':'g', 'u':'h', 'v':'i', 'w':'j', 'x':'k', 'y':'l', 'z':'m', 'A':'N', ' B':'O', 'C':'P', 'D':'Q', 'E':'R', 'F':'S', 'G':'T', 'H':'U', 'I':'V', 'J':'W', 'K':'X', 'L':'Y', 'M':'Z', 'N':'A' , 'O':'B', 'P':'C', 'Q':'D', 'R':'E', 'S':'F', 'T':'G', 'U':'H', 'V':'I', 'W':'J', 'X':'K', 'Y':'L', 'Z':'M'} Your task in this exercise is to implement an encoder/decoder of ROT-13. Once you're done, you will be able to read the following secret message: Pnrfne pvcure? V zhpu cersre Pnrfne fnynq!
  • 34. Homework Integer to Roman numerals converter
  • 35. Want more? • Go here: – 15 Exercises to Know A Programming Language: Part 1 – http://www.knowing.net/index.php/2006/06/16/ 15-exercises-to-know-a-programming-language- part-1
  • 36. A lot more… List comprehensions, decorators, lambda functions, effective unit tests, network and web programming, Some popular modules like urlib, simplejson, ElementTree and lxml for xml parsing, SQLAlchemy, sciPy, NumPy, mechanize
  • 37. At the end…… “I'll say that learning to create software changes you and makes you different. Not better or worse, just different.” “The world needs more weird people who know how things work and who love to figure it all out.” ~ Zed Shaw Source: http://learnpythonthehardway.org/book/advice.html

Editor's Notes

  • #8: http://guide.python-distribute.org/installation.html
  • #35: Chart: http://literacy.kent.edu/Minigrants/Cinci/romanchart.htm