SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

Intro to Python Programming Language
Intro to Python Programming LanguageIntro to Python Programming Language
Intro to Python Programming LanguageDipankar Achinta
 
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
 
Python-01| Fundamentals
Python-01| FundamentalsPython-01| Fundamentals
Python-01| FundamentalsMohd Sajjad
 
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 commentsNilimesh Halder
 
FLOW OF CONTROL-INTRO PYTHON
FLOW OF CONTROL-INTRO PYTHONFLOW OF CONTROL-INTRO PYTHON
FLOW OF CONTROL-INTRO PYTHONvikram mahendra
 
Variables in python
Variables in pythonVariables in python
Variables in pythonJaya Kumari
 
Python programming | Fundamentals of Python programming
Python programming | Fundamentals of Python programming Python programming | Fundamentals of Python programming
Python programming | Fundamentals of Python programming KrishnaMildain
 
Presentation on python
Presentation on pythonPresentation on python
Presentation on pythonwilliam john
 
Intro to Python for Non-Programmers
Intro to Python for Non-ProgrammersIntro to Python for Non-Programmers
Intro to Python for Non-ProgrammersAhmad Alhour
 
Python Course | Python Programming | Python Tutorial | Python Training | Edureka
Python Course | Python Programming | Python Tutorial | Python Training | EdurekaPython Course | Python Programming | Python Tutorial | Python Training | Edureka
Python Course | Python Programming | Python Tutorial | Python Training | EdurekaEdureka!
 
Python programming
Python programmingPython programming
Python programmingKeshav Gupta
 

Mais procurados (20)

Python
PythonPython
Python
 
Intro to Python Programming Language
Intro to Python Programming LanguageIntro to Python Programming Language
Intro to Python Programming Language
 
Python
PythonPython
Python
 
Python basics
Python basicsPython basics
Python basics
 
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 Tutorial Part 1
Python Tutorial Part 1Python Tutorial Part 1
Python Tutorial Part 1
 
Python-01| Fundamentals
Python-01| FundamentalsPython-01| Fundamentals
Python-01| Fundamentals
 
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
 
FLOW OF CONTROL-INTRO PYTHON
FLOW OF CONTROL-INTRO PYTHONFLOW OF CONTROL-INTRO PYTHON
FLOW OF CONTROL-INTRO PYTHON
 
Python programming : Control statements
Python programming : Control statementsPython programming : Control statements
Python programming : Control statements
 
Variables in python
Variables in pythonVariables in python
Variables in python
 
Python made easy
Python made easy Python made easy
Python made easy
 
Python programming | Fundamentals of Python programming
Python programming | Fundamentals of Python programming Python programming | Fundamentals of Python programming
Python programming | Fundamentals of Python programming
 
Presentation on python
Presentation on pythonPresentation on python
Presentation on python
 
Python : Data Types
Python : Data TypesPython : Data Types
Python : Data Types
 
Intro to Python for Non-Programmers
Intro to Python for Non-ProgrammersIntro to Python for Non-Programmers
Intro to Python for Non-Programmers
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Loops in Python
Loops in PythonLoops in Python
Loops in Python
 
Python Course | Python Programming | Python Tutorial | Python Training | Edureka
Python Course | Python Programming | Python Tutorial | Python Training | EdurekaPython Course | Python Programming | Python Tutorial | Python Training | Edureka
Python Course | Python Programming | Python Tutorial | Python Training | Edureka
 
Python programming
Python programmingPython programming
Python programming
 

Semelhante a Learn Python fundamentals from scratch

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
 

Semelhante a Learn Python fundamentals from scratch (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
 

Mais de 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
 

Mais de 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)
 

Último

MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Último (20)

MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

Learn Python fundamentals from scratch

  • 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

Notas do Editor

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