introduction to python - graz university of...
TRANSCRIPT
Introduction to Python
Michael Krisper Thomas Wurmitzer
March 22, 2014
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 1 / 27
Schedule
TutoriumDates & DeadlinesSubmission SystemAssignment I: Example(Short) Python Introductionnetworkx, numpy & matplotlib
DisclaimerEdited but mostly based on Michael Krisper’s Python Introduction (withpermission). Thank you!
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 2 / 27
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.
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 March 22, 2014 3 / 27
Installation
We use Python 2.7 - Python 3 is not supported (but may work)!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.
4
https://docs.python.org/2/faq/windows.html
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 4 / 27
Writing Python using REAL $EDITOR
Figure 1: https://xkcd.com/378
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 5 / 27
Better than hoverboards!
Figure 2: https://xkcd.com/353/Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 6 / 27
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 March 22, 2014 7 / 27
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 March 22, 2014 8 / 27
Writing Python: Calculations (interactive5)
% pythonPython 2.7.5 (default, Mar 9 2014, 22:15:05)
>>> 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
Hint: from __future__ import divisionBefore: 3/2 -> 1, After: 3/2 -> 1.5
5
https:
//docs.python.org/2/tutorial/interpreter.html#invoking-the-interpreter
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 9 / 27
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 March 22, 2014 10 / 27
Writing Python: Bool67
bool(None) # Falsebool(0) # Falsebool({}) # Falsebool([]) # Falsebool("") # False
bool(1) # Truebool([1,2,3,4]) # Truebool("Hello") # True# ...
6
https://docs.python.org/2/library/functions.html#bool
7
https://docs.python.org/2/library/constants.html#False
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 11 / 27
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)
8
http://docs.python.org/2/library/stdtypes.html#string-methods
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 12 / 27
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 March 22, 2014 13 / 27
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
9
https://docs.python.org/2/tutorial/datastructures.html
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 14 / 27
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")
10
https://docs.python.org/2/tutorial/datastructures.html
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 15 / 27
Writing Python: Built-in Datatypes (Excerpt)
int Integer 42Bool Boolean: True, False TrueLong Long Integer 10000000000000000L
Float Double 3.85Complex 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 March 22, 2014 16 / 27
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, ...
11
https://docs.python.org/2/library/functions.html#built-in-funcs
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 17 / 27
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?")
12
https://docs.python.org/2/library/functions.html#built-in-funcs
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 18 / 27
Control Flow13
if points < 3 or �bird� is not word:print "Erm, seriously?"
elif points < 10:print "Seriously?"
else:print "Good job!"
for word in [�ham�, �sausage�, �spam�]:print word
for i, word in enumerate([�ham�, �sausage�, �spam�]):print i, word
while answer < 42:answer +=1
13
https://docs.python.org/2/tutorial/controlflow.html
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 19 / 27
Functions14
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 March 22, 2014 20 / 27
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()
15
https://docs.python.org/2/tutorial/classes.html
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 21 / 27
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 March 22, 2014 22 / 27
(Common) Exceptions17
>>> 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
17
https://docs.python.org/2/tutorial/errors.html
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 23 / 27
JSON18
The json module provides methods for easily reading and writing data fromand to files.import json
json_string = �{�list�: [1,2,3,4],�key�: �value�, �truth�: 42 }�
content = json.loads(json_string)
print contents[�truth�] # output: 42print contents[�key�] # output: valueprint contents[�list�] # output: [1,2,3,4]
18
https://docs.python.org/2/library/json.html
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 24 / 27
networkx19
The networkx module/library provides functionality to create, analyze anddraw complex networks.import networkx as nx
G = nx.Graph()G.add_node(1)G.add_edge(1, 2)G.add_edge(2, 3)
import matplotlib.pylab as plot
plot.figure()nx.draw(G)plot.savefig("graph.png")
19
http:
//networkx.github.io/documentation/latest/tutorial/tutorial.html
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 25 / 27
Help & ResourcesUse help and dir in interactive mode.Library Documentation: networkx, numpy, matplotlibPython Language Reference
I https://docs.python.org/2/reference/index.htmlGoogle’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/pythonThe Hitchhiker’s Guide to Python!
I http://docs.python-guide.orgStackOverflow
I http://stackoverflow.com/questions/tagged/pythonReddit
I http://reddit.com/r/learnpythonMichael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 26 / 27
Questions?
1 Ask now.2 Ask in the newsgroup tu-graz.lv.web-science.3 Send an e-mail:
I Fiona Draxler, [email protected] Thomas Wurmitzer, [email protected] Please use [WSWT] or the course number 707.000 as a subject.
Please post general questions regarding the assignment tasks to thetu-graz.lv.web-science. If you have a particular, specific problem, youcan contact us per e-mail as well. Answering delays might be longer,though.
Michael Krisper, Thomas Wurmitzer Introduction to Python March 22, 2014 27 / 27