26
Introduction to Python Michael Krisper Thomas Wurmitzer October 21, 2014 Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 1 / 26

Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

  • Upload
    hangoc

  • View
    271

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Introduction to Python

Michael Krisper Thomas Wurmitzer

October 21, 2014

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 1 / 26

Page 2: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Schedule

Tutorium IDates & DeadlinesSubmission SystemMap/Reduce ExampleIntroduction to Python (1)

Tutorium IIIntroduction to Python (2)Questions

DisclaimerEdited but mostly based on Michael Krisper’s Python Introduction (withpermission). Thank you!

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 2 / 26

Page 3: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

What is Python?

“Python is a dynamic, interpreted language. Source code does not

declare the types of variables or parameters or methods. This

makes the code short and flexible, and you lose the compile-time

type checking in the source code. Python tracks the types of all

values at runtime and flags code that does not make sense as it

runs.”

1

Huge standard library and community.Huge list of 3rd party libraries2.If you want to know more about Python’s history checkout Guido’sBlog3 on that topic.

1https://developers.google.com/edu/python/introduction

2https://github.com/vinta/awesome-python

3http://python-history.blogspot.co.at

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 3 / 26

Page 4: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Installation

We use Python 2.7 - Python 3 is not supported and will most likely notwork.Linux: Most distributions already come with Python 2.7. If not installthem via your distributions packagemanager e.g. (pacman, apt, . . . )OSX: All recent versions ship with Python 2.7 out of the box.Windows: Windows Installer via python.org and check out theWindows FAQ4.

4https://docs.python.org/2/faq/windows.html

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 4 / 26

Page 5: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Writing Python using REAL $EDITOR

Figure 1: https://xkcd.com/378

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 5 / 26

Page 6: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Better than hoverboards!

Figure 2: https://xkcd.com/353/Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 6 / 26

Page 7: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Writing Python: Hello World

% cat hello.pyprint �Hello World�% python hello.py # Run code inside fileHello World

% python -c "print �Hello World�" # Pass program as string.

% python # Interactive Mode% ipython # ... on steroids

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 7 / 26

Page 8: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Writing Python: Hello World (Extended)

#!/usr/bin/env pythonimport sysimport math

def my_function(message):print messagereturn math.e # return constant from module

if __name__ == �__main__�:if len(sys.argv) < 2:

sys.exit(1)

result = my_function(sys.argv[1])print math.ceil(result) # function in module

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 8 / 26

Page 9: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Writing Python: Calculations (interactive5)

% pythonPython 2.7.5 (default, Mar 9 2014, 22:15:05)[...]Type "help", "copyright", "credits" or "license" for more information.

>>> 3+4 # output: 7>>> 5*3.7+1 # output: 19.5>>> 2**3-1 # output: 7>>> 5**70 # output: 847032947254...13916015625L>>> 3/2 # output: 1>>> 3/2.0 # output: 1.5>>> 3.0//4.0 # output: 0.0>>> 5*"a" # output: "aaaaa">>> 3+4 == 2**3-1 # output: True

5https:

//docs.python.org/2/tutorial/interpreter.html#invoking-the-interpreter

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 9 / 26

Page 10: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Writing Python: Variables & Assignments

>>> aTraceback (most recent call last):

File "<stdin>", line 1, in <module>NameError: name �a� is not defined>>> a = 42 # integer>>> a42>>> type(a) # output: <type �int�>>>> a += 1 # increase a by one

>>> b = 1.78 # float>>> c = "Hello" # string>>> d = [1,2,3,4] # list>>> e = (1,2,3) # tuple>>> f, g = True, None

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 10 / 26

Page 11: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Writing Python: Bool67

bool(None) # Falsebool(0) # Falsebool({}) # Falsebool([]) # Falsebool("") # False

bool(1) # Truebool([1,2,3,4]) # Truebool("Hello") # True# ...

Python on Lovea

ahttps://twitter.com/johl/status/318494068365733889

>>> import this>>> love = this>>> this is love, love is not True or False, love is love>>> (True, True, True)

6https://docs.python.org/2/library/functions.html#bool

7https://docs.python.org/2/library/constants.html#False

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 11 / 26

Page 12: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Writing Python: Strings8

>>> s = �Hello World�>>> s = "Hello World">>> s = """HelloWorld""" # Multiline

# Strings are Sequences>>> �lie� in �believe� # output: True>>> �execute�.find(�cute�) # output: 3>>> �foo� + �bar� # output: foobar>>> �\n\nValar Dohaeris �.strip() # output: Valar Dohaeris>>> �A;B;C\n;D�.split(�;�) # output: [�A�, �B�, �C\n�, �D�]

>>> help(str)

8http://docs.python.org/2/library/stdtypes.html#string-methods

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 12 / 26

Page 13: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Writing Python: Conversion

>>> str(434) # �434�

>>> int(�956�) # 956>>> int(�\n\n210 \r\n�) # 210>>> int(�5a�)Traceback (most recent call last):

File "<stdin>", line 1, in <module>ValueError: invalid literal for int() with base 10: �5a�>>> int(�5a�, 16) # 90

>>> float(�3.14�) # 3.14

>>> type(�434�) # <type �str�>>>> type(434) # <type �int�>

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 13 / 26

Page 14: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Writing Python: Lists9

>>> a = [4, 8, 15] # list definition>>> a[0] # get first element>>> len(a) # length of the list>>> a[1:3] # get a slice by range>>> a[-1] # get last element>>> a.append(16) # append element>>> a += [55, 23, 42] # concat lists>>> a.remove(55) # remove an element>>> del a[5] # delete element on index>>> sorted(a) # sort the list

9https://docs.python.org/2/tutorial/datastructures.html

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 14 / 26

Page 15: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Writing Python: Dictionary10

>>> d = { "key": "value", "key2": "value2" }>>> d["key"]>>> d.keys()>>> d.values()>>> d["key3"] = 45>>> "key" in d>>> len(d)>>> d.get("nokey", "default") # = "default">>> d.setdefault ("nokey", "default")

10https://docs.python.org/2/tutorial/datastructures.html

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 15 / 26

Page 16: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Writing Python: Built-in Datatypes (Excerpt)

int Integer 42

Bool Boolean: True, False True

Long Long Integer 10000000000000000L

Float Double 3.85

Complex Complex Number (3.1+0.9j)

Str String “Jaqen H’ghar”List List / Array [1, 2, 5.5, "asdf", 0]

Dict Dictionary {"a":"foo", "b":"bar"}

Set Set Set([1, 2, 1, 3, True])

Tuple Tuple (1, 2, None, True, 4)

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 16 / 26

Page 17: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Writing Python: Built-in Functions11 (Excerpt)len(...) Get length of a sequencemax(...)/min(...) Get max / min element of a sequenceopen(...) Open a file for read/writeprint Output to consoleinput(...) Read from consolerange(...)/xrange(...) Create a counter sequencesorted(...) Sort a sequencesum(...) Calculate the sum of a sequencetype(...) Get the type of a variable

Others: abs, dir, eval, format, hash, help, next, enumerate,ord, map, reduce, slice, unicode, zip, apply, ...

11https://docs.python.org/2/library/functions.html#built-in-funcs

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 17 / 26

Page 18: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Writing Python: Built-in Functions12 (Excerpt)

print "Valar morghulis" # with newline

print "Valar morghulis", # without newline

print "a = ", 1, " b = ", 2

print "a = %d b = %d" % (1,2)

print "{} of {}".format(�mother�, �dragons�)

import syssys.stdout.write("Who wrote the pink letter?")

12https://docs.python.org/2/library/functions.html#built-in-funcs

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 18 / 26

Page 19: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Control Flow13

if points < 10 or �bird� is not word:print "Erm, seriously?"

elif points < 40:print "Seriously?"

else:print "Good job!"

for word in [�ham�, �sausage�, �spam�]:print word

while answer < 42:answer +=1

Additionally statements like pass, break or continue can be used tofurther control the above.

13https://docs.python.org/2/tutorial/controlflow.html

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 19 / 26

Page 20: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Functions14

def say(string):print string

>>> say(�Hello�) # Output: Hello>>> say # Output: <function say at 0x102697938>>>> s = say>>> s(�Hodor!�) # Output: Hodor!

14https:

//docs.python.org/2/tutorial/controlflow.html#defining-functions

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 20 / 26

Page 21: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Classes15

class Human(object): # Inherits from �object�def __init__(self, name): # Constructor

self.name = name

def speak(self):print self.name, ": Valar Morghulis."

jh = Human("Jaqen H�ghar");jh.speak()

15https://docs.python.org/2/tutorial/classes.html

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 21 / 26

Page 22: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

File I/O 16

fh = open(�filename.txt�, �r�)lines = fh.readlines()fh.close()

with open(�filename.txt�, �w�) as f:f.write("\n" % )

with open(�filename.txt�, �w�) as f:f.write("%d + %d = %d\n" % (2,3,2+3))f.write("Another line\n")f.write("Another line\n")

16https:

//docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 22 / 26

Page 23: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

DateTime17

>>> import datetime>>> a = datetime.datetime(2014, 10, 26, 9, 15, 10)>>> b = datetime.datetime(2024, 10, 26, 9, 15, 10)>>> type(a) # Output: <type �datetime.datetime�>>>> a # 26.10.2014 09:15:10>>> a < b # Output: True

>>> st = "2013-11-06 09:57:52">>> ft = "%Y-%m-%d %H:%M:%S">>> c = datetime.datetime.strptime(st, ft)>>> type(c) # Output: <type �datetime.datetime�>>>> c # 06.11.2013 09:57:52

>>> �2013-11-06 09:57:52� < �2013-11-06 10:57:52� # ???>>> �2013-11-06 09:57:52� > �2013-11-06 10:57:52� # ???

17http://docs.python.org/2/library/datetime.html

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 23 / 26

Page 24: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

(Common) Exceptions18

>>> 2 + �Hodor!�Traceback (most recent call last):

File "<stdin>", line 1, in <module>TypeError: unsupported operand type(s) for +: �int� and �str�

>>> 2 + aTraceback (most recent call last):

File "<stdin>", line 1, in <module>NameError: name �a� is not defined

>>> while �Hodor� print "Hodor!"File "<stdin>", line 1

while �Hodor� print "Hodor!"^

SyntaxError: invalid syntax

18https://docs.python.org/2/tutorial/errors.html

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 24 / 26

Page 25: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Help & ResourcesUse help and dir in interactive mode.Python Language Reference

I https://docs.python.org/2/reference/index.html

Google’s Python ClassI https://developers.google.com/edu/python/

Think Python: How to Think Like a Computer ScientistI http://www.greenteapress.com/thinkpython/

Code Academy’s Python TrackI http://www.codecademy.com/en/tracks/python

StackOverflowI http://stackoverflow.com/questions/tagged/python

Reddithttp://reddit.com/r/pythonhttp://reddit.com/r/learnpython

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 25 / 26

Page 26: Introduction to Python - Knowledge Technologies Institutekti.tugraz.at/staff/denis/courses/dbase2/python-tutorial.pdf · Introduction to Python Michael Krisper Thomas Wurmitzer October

Questions?

eMail: [email protected] Please use [DB2] or the course number 707.030 as a subject.

Newsgroup: tu-graz.lv.dbase2Question Hours

I 14.12.2015, 13:00 (HS i9 PZ2EG048)I 11.01.2016, 13:00 (HS i9 PZ2EG048)

Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 26 / 26