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

Date and Time Module in Python | Edureka
Date and Time Module in Python | EdurekaDate and Time Module in Python | Edureka
Date and Time Module in Python | Edureka
Edureka!
 
Python Programming Essentials - M8 - String Methods
Python Programming Essentials - M8 - String MethodsPython Programming Essentials - M8 - String Methods
Python Programming Essentials - M8 - String Methods
P3 InfoTech Solutions Pvt. Ltd.
 
Lesson 03 python statement, indentation and comments
Lesson 03   python statement, indentation and commentsLesson 03   python statement, indentation and comments
Lesson 03 python statement, indentation and comments
Nilimesh Halder
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
AnirudhaGaikwad4
 
Python in 30 minutes!
Python in 30 minutes!Python in 30 minutes!
Python in 30 minutes!
Fariz Darari
 
Python Programming Language | Python Classes | Python Tutorial | Python Train...
Python Programming Language | Python Classes | Python Tutorial | Python Train...Python Programming Language | Python Classes | Python Tutorial | Python Train...
Python Programming Language | Python Classes | Python Tutorial | Python Train...
Edureka!
 
Python for loop
Python for loopPython for loop
Python for loop
Aishwarya Deshmukh
 
Loops in Python
Loops in PythonLoops in Python
Loops in Python
AbhayDhupar
 
Python
PythonPython
Python
Aashish Jain
 
Iterarators and generators in python
Iterarators and generators in pythonIterarators and generators in python
Iterarators and generators in python
Sarfaraz Ghanta
 
PyCharm demo
PyCharm demoPyCharm demo
PyCharm demo
T. Kim Nguyen
 
Python Basics
Python BasicsPython Basics
Python Basics
Pooja B S
 
Python by Rj
Python by RjPython by Rj
Introduction to Python
Introduction to Python Introduction to Python
Introduction to Python
amiable_indian
 
Python ppt
Python pptPython ppt
Python ppt
Rohit Verma
 
Python Functions
Python   FunctionsPython   Functions
Python Functions
Mohammed Sikander
 
Python basics
Python basicsPython basics
Python basics
RANAALIMAJEEDRAJPUT
 
An introduction to Python for absolute beginners
An introduction to Python for absolute beginnersAn introduction to Python for absolute beginners
An introduction to Python for absolute beginners
Kálmán "KAMI" Szalai
 
Introduction To Python
Introduction To PythonIntroduction To Python
Introduction To Python
Vanessa Rene
 

What's hot (20)

Date and Time Module in Python | Edureka
Date and Time Module in Python | EdurekaDate and Time Module in Python | Edureka
Date and Time Module in Python | Edureka
 
Python Programming Essentials - M8 - String Methods
Python Programming Essentials - M8 - String MethodsPython Programming Essentials - M8 - String Methods
Python Programming Essentials - M8 - String Methods
 
Lesson 03 python statement, indentation and comments
Lesson 03   python statement, indentation and commentsLesson 03   python statement, indentation and comments
Lesson 03 python statement, indentation and comments
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Python in 30 minutes!
Python in 30 minutes!Python in 30 minutes!
Python in 30 minutes!
 
Python Programming Language | Python Classes | Python Tutorial | Python Train...
Python Programming Language | Python Classes | Python Tutorial | Python Train...Python Programming Language | Python Classes | Python Tutorial | Python Train...
Python Programming Language | Python Classes | Python Tutorial | Python Train...
 
Python for loop
Python for loopPython for loop
Python for loop
 
Loops in Python
Loops in PythonLoops in Python
Loops in Python
 
Python
PythonPython
Python
 
Python Tutorial Part 1
Python Tutorial Part 1Python Tutorial Part 1
Python Tutorial Part 1
 
Iterarators and generators in python
Iterarators and generators in pythonIterarators and generators in python
Iterarators and generators in python
 
PyCharm demo
PyCharm demoPyCharm demo
PyCharm demo
 
Python Basics
Python BasicsPython Basics
Python Basics
 
Python by Rj
Python by RjPython by Rj
Python by Rj
 
Introduction to Python
Introduction to Python Introduction to Python
Introduction to Python
 
Python ppt
Python pptPython ppt
Python ppt
 
Python Functions
Python   FunctionsPython   Functions
Python Functions
 
Python basics
Python basicsPython basics
Python basics
 
An introduction to Python for absolute beginners
An introduction to Python for absolute beginnersAn introduction to Python for absolute beginners
An introduction to Python for absolute beginners
 
Introduction To Python
Introduction To PythonIntroduction To Python
Introduction To Python
 

Similar to Python Workshop - Learn Python the Hard Way

Python Basics
Python BasicsPython Basics
Python Basics
tusharpanda88
 
Learn 90% of Python in 90 Minutes
Learn 90% of Python in 90 MinutesLearn 90% of Python in 90 Minutes
Learn 90% of Python in 90 Minutes
Matt Harrison
 
Improve Your Edge on Machine Learning - Day 1.pptx
Improve Your Edge on Machine Learning - Day 1.pptxImprove Your Edge on Machine Learning - Day 1.pptx
Improve Your Edge on Machine Learning - Day 1.pptx
CatherineVania1
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
UC San Diego
 
Python_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfPython_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdf
sagar414433
 
Python_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfPython_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdf
sagar414433
 
Introduction to Python 01-08-2023.pon by everyone else. . Hence, they must be...
Introduction to Python 01-08-2023.pon by everyone else. . Hence, they must be...Introduction to Python 01-08-2023.pon by everyone else. . Hence, they must be...
Introduction to Python 01-08-2023.pon by everyone else. . Hence, they must be...
DRVaibhavmeshram1
 
Introduction to Python , Overview
Introduction to Python , OverviewIntroduction to Python , Overview
Introduction to Python , Overview
NB Veeresh
 
GE8151 Problem Solving and Python Programming
GE8151 Problem Solving and Python ProgrammingGE8151 Problem Solving and Python Programming
GE8151 Problem Solving and Python Programming
Muthu Vinayagam
 
Introduction to Python for Plone developers
Introduction to Python for Plone developersIntroduction to Python for Plone developers
Introduction to Python for Plone developers
Jim Roepcke
 
Python programming workshop
Python programming workshopPython programming workshop
Python programming workshop
BAINIDA
 
Python basics
Python basicsPython basics
Python basics
Hoang Nguyen
 
Python basics
Python basicsPython basics
Python basics
Fraboni Ec
 
Python basics
Python basicsPython basics
Python basics
James Wong
 
Python basics
Python basicsPython basics
Python basics
Tony Nguyen
 
Chapter 2 Python Language Basics, IPython.pptx
Chapter 2 Python Language Basics, IPython.pptxChapter 2 Python Language Basics, IPython.pptx
Chapter 2 Python Language Basics, IPython.pptx
SovannDoeur
 
python1.ppt
python1.pptpython1.ppt
python1.ppt
arivukarasi2
 

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

Python Basics
Python BasicsPython Basics
Python Basics
 
Learn 90% of Python in 90 Minutes
Learn 90% of Python in 90 MinutesLearn 90% of Python in 90 Minutes
Learn 90% of Python in 90 Minutes
 
Improve Your Edge on Machine Learning - Day 1.pptx
Improve Your Edge on Machine Learning - Day 1.pptxImprove Your Edge on Machine Learning - Day 1.pptx
Improve Your Edge on Machine Learning - Day 1.pptx
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
 
Python_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfPython_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdf
 
Python_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfPython_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdf
 
Introduction to Python 01-08-2023.pon by everyone else. . Hence, they must be...
Introduction to Python 01-08-2023.pon by everyone else. . Hence, they must be...Introduction to Python 01-08-2023.pon by everyone else. . Hence, they must be...
Introduction to Python 01-08-2023.pon by everyone else. . Hence, they must be...
 
Introduction to Python , Overview
Introduction to Python , OverviewIntroduction to Python , Overview
Introduction to Python , Overview
 
GE8151 Problem Solving and Python Programming
GE8151 Problem Solving and Python ProgrammingGE8151 Problem Solving and Python Programming
GE8151 Problem Solving and Python Programming
 
Introduction to Python for Plone developers
Introduction to Python for Plone developersIntroduction to Python for Plone developers
Introduction to Python for Plone developers
 
Python programming workshop
Python programming workshopPython programming workshop
Python programming workshop
 
Python basics
Python basicsPython basics
Python basics
 
Python basics
Python basicsPython basics
Python basics
 
Python basics
Python basicsPython basics
Python basics
 
Python basics
Python basicsPython basics
Python basics
 
Python basics
Python basicsPython basics
Python basics
 
Python basics
Python basicsPython basics
Python basics
 
Python basics
Python basicsPython basics
Python basics
 
Chapter 2 Python Language Basics, IPython.pptx
Chapter 2 Python Language Basics, IPython.pptxChapter 2 Python Language Basics, IPython.pptx
Chapter 2 Python Language Basics, IPython.pptx
 
python1.ppt
python1.pptpython1.ppt
python1.ppt
 

More from Utkarsh Sengar

Perl 101 - The Basics of Perl Programming
Perl  101 - The Basics of Perl ProgrammingPerl  101 - The Basics of Perl Programming
Perl 101 - The Basics of Perl ProgrammingUtkarsh Sengar
 
Linux Interview Questions Quiz
Linux Interview Questions QuizLinux Interview Questions Quiz
Linux Interview Questions QuizUtkarsh Sengar
 
Begin With Linux Basics
Begin With Linux BasicsBegin With Linux Basics
Begin With Linux BasicsUtkarsh Sengar
 
Linux User Group @ SJSU Meeting#1
Linux User Group @ SJSU Meeting#1Linux User Group @ SJSU Meeting#1
Linux User Group @ SJSU Meeting#1Utkarsh Sengar
 
Hackers The Anarchists Of Our Time
Hackers The Anarchists Of Our TimeHackers The Anarchists Of Our Time
Hackers The Anarchists Of Our TimeUtkarsh Sengar
 
SharePoint in Enterprise Collaboration (Education)
SharePoint in Enterprise Collaboration (Education)SharePoint in Enterprise Collaboration (Education)
SharePoint in Enterprise Collaboration (Education)Utkarsh Sengar
 

More from Utkarsh Sengar (7)

Perl 101 - The Basics of Perl Programming
Perl  101 - The Basics of Perl ProgrammingPerl  101 - The Basics of Perl Programming
Perl 101 - The Basics of Perl Programming
 
Linux Interview Questions Quiz
Linux Interview Questions QuizLinux Interview Questions Quiz
Linux Interview Questions Quiz
 
Begin With Linux Basics
Begin With Linux BasicsBegin With Linux Basics
Begin With Linux Basics
 
Linux Commands
Linux CommandsLinux Commands
Linux Commands
 
Linux User Group @ SJSU Meeting#1
Linux User Group @ SJSU Meeting#1Linux User Group @ SJSU Meeting#1
Linux User Group @ SJSU Meeting#1
 
Hackers The Anarchists Of Our Time
Hackers The Anarchists Of Our TimeHackers The Anarchists Of Our Time
Hackers The Anarchists Of Our Time
 
SharePoint in Enterprise Collaboration (Education)
SharePoint in Enterprise Collaboration (Education)SharePoint in Enterprise Collaboration (Education)
SharePoint in Enterprise Collaboration (Education)
 

Recently uploaded

State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 

Recently uploaded (20)

State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 

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

  1. http://guide.python-distribute.org/installation.html
  2. Chart: http://literacy.kent.edu/Minigrants/Cinci/romanchart.htm