SlideShare ist ein Scribd-Unternehmen logo
1 von 37
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

Weitere ähnliche Inhalte

Was ist angesagt?

Bash shell scripting
Bash shell scriptingBash shell scripting
Bash shell scriptingVIKAS TIWARI
 
Overview of python 2019
Overview of python 2019Overview of python 2019
Overview of python 2019Samir Mohanty
 
PYTHON - TKINTER - GUI - PART 1.ppt
PYTHON - TKINTER - GUI - PART 1.pptPYTHON - TKINTER - GUI - PART 1.ppt
PYTHON - TKINTER - GUI - PART 1.pptPriyaSoundararajan1
 
Iterarators and generators in python
Iterarators and generators in pythonIterarators and generators in python
Iterarators and generators in pythonSarfaraz Ghanta
 
Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)Paige Bailey
 
Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)Pedro Rodrigues
 
Modules and packages in python
Modules and packages in pythonModules and packages in python
Modules and packages in pythonTMARAGATHAM
 
Java Thread Synchronization
Java Thread SynchronizationJava Thread Synchronization
Java Thread SynchronizationBenj Del Mundo
 
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYAPYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYAMaulik Borsaniya
 
Variables & Data Types In Python | Edureka
Variables & Data Types In Python | EdurekaVariables & Data Types In Python | Edureka
Variables & Data Types In Python | EdurekaEdureka!
 
Function in Python
Function in PythonFunction in Python
Function in PythonYashdev Hada
 

Was ist angesagt? (20)

Bash shell scripting
Bash shell scriptingBash shell scripting
Bash shell scripting
 
Beginning Python Programming
Beginning Python ProgrammingBeginning Python Programming
Beginning Python Programming
 
Overview of python 2019
Overview of python 2019Overview of python 2019
Overview of python 2019
 
PYTHON - TKINTER - GUI - PART 1.ppt
PYTHON - TKINTER - GUI - PART 1.pptPYTHON - TKINTER - GUI - PART 1.ppt
PYTHON - TKINTER - GUI - PART 1.ppt
 
Ubuntu – Linux Useful Commands
Ubuntu – Linux Useful CommandsUbuntu – Linux Useful Commands
Ubuntu – Linux Useful Commands
 
Functions in C++
Functions in C++Functions in C++
Functions in C++
 
Iterarators and generators in python
Iterarators and generators in pythonIterarators and generators in python
Iterarators and generators in python
 
Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)
 
Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)
 
Python Programming Essentials - M12 - Lists
Python Programming Essentials - M12 - ListsPython Programming Essentials - M12 - Lists
Python Programming Essentials - M12 - Lists
 
Loops in Python
Loops in PythonLoops in Python
Loops in Python
 
Python ppt
Python pptPython ppt
Python ppt
 
Modules and packages in python
Modules and packages in pythonModules and packages in python
Modules and packages in python
 
Java Thread Synchronization
Java Thread SynchronizationJava Thread Synchronization
Java Thread Synchronization
 
Chapter 03 python libraries
Chapter 03 python librariesChapter 03 python libraries
Chapter 03 python libraries
 
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYAPYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
 
File handling-c
File handling-cFile handling-c
File handling-c
 
Chapter 07 inheritance
Chapter 07 inheritanceChapter 07 inheritance
Chapter 07 inheritance
 
Variables & Data Types In Python | Edureka
Variables & Data Types In Python | EdurekaVariables & Data Types In Python | Edureka
Variables & Data Types In Python | Edureka
 
Function in Python
Function in PythonFunction in Python
Function in Python
 

Ähnlich wie Python Workshop - Learn Python the Hard Way

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.pptxCatherineVania1
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to PythonUC San Diego
 
Python_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfPython_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfsagar414433
 
Python_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfPython_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfsagar414433
 
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 , OverviewNB Veeresh
 
GE8151 Problem Solving and Python Programming
GE8151 Problem Solving and Python ProgrammingGE8151 Problem Solving and Python Programming
GE8151 Problem Solving and Python ProgrammingMuthu Vinayagam
 
Introduction to Python for Plone developers
Introduction to Python for Plone developersIntroduction to Python for Plone developers
Introduction to Python for Plone developersJim Roepcke
 
Python programming workshop
Python programming workshopPython programming workshop
Python programming workshopBAINIDA
 
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.pptxSovannDoeur
 

Ähnlich wie Python Workshop - Learn Python the Hard Way (20)

Python Basics
Python BasicsPython Basics
Python Basics
 
Python basic
Python basicPython basic
Python basic
 
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
 

Mehr von 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
 

Mehr von 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)
 

Kürzlich hochgeladen

MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 

Kürzlich hochgeladen (20)

MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

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

Hinweis der Redaktion

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