Introduction to Python Michael Krisper Thomas Wurmitzer October 21, 2014 Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 1 / 26
Schedule Tutorium I Dates & Deadlines Submission System Map/Reduce Example Introduction to Python (1) Tutorium II Introduction to Python (2) Questions Disclaimer Edited but mostly based on Michael Krisper s Python Introduction (with permission). Thank you! Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 2 / 26
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 libraries 2. If you want to know more about Python s history checkout Guido s Blog 3 on that topic. 1 https://developers.google.com/edu/python/introduction 2 https://github.com/vinta/awesome-python 3 http://python-history.blogspot.co.at Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 3 / 26
Installation We use Python 2.7 - Python 3 is not supported and will most likely not work. Linux: Most distributions already come with Python 2.7. If not install them 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 the Windows FAQ 4. 4 https://docs.python.org/2/faq/windows.html Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 4 / 26
Writing Python using REAL $EDITOR Figure 1: https://xkcd.com/378 Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 5 / 26
Better than hoverboards! Figure 2: https://xkcd.com/353/ Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 6 / 26
Writing Python: Hello World % cat hello.py print Hello World % python hello.py # Run code inside file Hello 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
Writing Python: Hello World (Extended) #!/usr/bin/env python import sys import math def my_function(message): print message return 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
Writing Python: Calculations (interactive 5 ) % python Python 2.7.5 (default, Mar 9 2014, 22:15:05) [...] Type "help", "copyright", "credits" or "license" for more info >>> 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 5 https: //docs.python.org/2/tutorial/interpreter.html#invoking-the-interpreter Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 9 / 26
Writing Python: Variables & Assignments >>> a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name a is not defined >>> a = 42 # integer >>> a 42 >>> 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
Writing Python: Bool 67 bool(none) # False bool(0) # False bool({}) # False bool([]) # False bool("") # False bool(1) # True bool([1,2,3,4]) # True bool("hello") # True #... Python on Love a a https://twitter.com/johl/status/318494068365733889 >>> import this >>> love = this >>> this is love, love is not True or False, love is love >>> (True, True, True) Michael 6 Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 11 / 26
Writing Python: Strings 8 >>> s = Hello World >>> s = "Hello World" >>> s = """ Hello World """ # 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) 8 http://docs.python.org/2/library/stdtypes.html#string-methods Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 12 / 26
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: >>> int( 5a, 16) # 90 5a >>> 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
Writing Python: Lists 9 >>> 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 9 https://docs.python.org/2/tutorial/datastructures.html Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 14 / 26
Writing Python: Dictionary 10 >>> 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") 10 https://docs.python.org/2/tutorial/datastructures.html Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 15 / 26
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
Writing Python: Built-in Functions 11 (Excerpt) len(...) max(...)/min(...) open(...) print input(...) range(...)/xrange(...) sorted(...) sum(...) type(...) Get length of a sequence Get max / min element of a sequence Open a file for read/write Output to console Read from console Create a counter sequence Sort a sequence Calculate the sum of a sequence Get the type of a variable Others: abs, dir, eval, format, hash, help, next, enumerate, ord, map, reduce, slice, unicode, zip, apply,... 11 https://docs.python.org/2/library/functions.html#built-in-funcs Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 17 / 26
Writing Python: Built-in Functions 12 (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 sys sys.stdout.write("who wrote the pink letter?") 12 https://docs.python.org/2/library/functions.html#built-in-funcs Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 18 / 26
Control Flow 13 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 to further control the above. 13 https://docs.python.org/2/tutorial/controlflow.html Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 19 / 26
Functions 14 def say(string): print string >>> say( Hello ) # Output: Hello >>> say # Output: <function say at 0x102697938> >>> s = say >>> s( Hodor! ) # Output: Hodor! 14 https: //docs.python.org/2/tutorial/controlflow.html#defining-functions Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 20 / 26
Classes 15 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() 15 https://docs.python.org/2/tutorial/classes.html Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 21 / 26
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") 16 https: //docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 22 / 26
DateTime 17 >>> 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 #??? 17 http://docs.python.org/2/library/datetime.html Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 23 / 26
(Common) Exceptions 18 >>> 2 + Hodor! Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: int and str >>> 2 + a Traceback (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 18 https://docs.python.org/2/tutorial/errors.html Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 24 / 26
Help & Resources Use help and dir in interactive mode. Python Language Reference I https://docs.python.org/2/reference/index.html Google s Python Class I https://developers.google.com/edu/python/ Think Python: How to Think Like a Computer Scientist I http://www.greenteapress.com/thinkpython/ Code Academy s Python Track I http://www.codecademy.com/en/tracks/python StackOverflow I http://stackoverflow.com/questions/tagged/python Reddit http://reddit.com/r/python http://reddit.com/r/learnpython Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 25 / 26
Questions? email: thomas.wurmitzer@tugraz.at I Please use [DB2] or the course number 707.030 as a subject. Newsgroup: tu-graz.lv.dbase2 Question Hours I I 14.12.2015, 13:00 (HS i9 PZ2EG048) 11.01.2016, 13:00 (HS i9 PZ2EG048) Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 26 / 26