Upload
hangoc
View
271
Download
0
Embed Size (px)
Citation preview
Introduction to Python
Michael Krisper Thomas Wurmitzer
October 21, 2014
Michael Krisper, Thomas Wurmitzer Introduction to Python October 21, 2014 1 / 26
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
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
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
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.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
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
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
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
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
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
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
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
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
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 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
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
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
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
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
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
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
(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
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
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