Python Basic and Advanced (22.3.2021 - 25.3.2021)¶
Agenda¶
Day 1: Programming Basics
Variables
Control Flow:
if
,while
,for
Functions
Exercises
Day 2: Python, Advanced
Data Structures:
list
,set
,dict
Iteration
File I/O (CSV Files?)
Exercises
Day 3: even more advanced
Object Oriented Programming
Unit Testing
Decorators
Exercises
Day 4: Consulting
Jupyter Notebook¶
Log¶
We’re lagging behind what’s in the agenda, don’t want to lose anybody.
Day 1¶
Basics from the slides, up until
if
(see here)Exercise: Determine Maximum of Two Numbers
Solution, doing everything by hand …
import sys left = int(sys.argv[1]) right = int(sys.argv[2]) if left < right: print(right) else: print(left)
Solution, knowing about the
map()
function and themax()
functionimport sys print(max(map(int, sys.argv[1:])))
Day 2¶
-
import sys lookup_table = { 0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five', 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine', } if len(sys.argv) != 2: print('gib eine parameter an mich, depp!', file=sys.stderr) sys.exit(1) digit = int(sys.argv[1]) word = lookup_table.get(digit) if word == None: print('nix drin', file=sys.stderr) sys.exit(3) else: print(word)
while
Exercise: primeness (using while)
import sys number = int(sys.argv[1]) if number == 1: print(number, 'is not prime') sys.exit(0) divisor = 2 while divisor < number: if number % divisor == 0: print(number, 'is not prime') break divisor += 1 else: print(number, 'is prime')
for
,range()
Exercise: primeness (using for)
import sys number = int(sys.argv[1]) if number == 1: print(number, 'is not prime') sys.exit(0) for divisor in range(2, number): if number % divisor == 0: print(number, 'is not prime') break else: print(number, 'is prime')
Functions
Exercise: primeness (function)
import sys def is_prime(number): if number == 1: return False for divisor in range(2, number): if number % divisor == 0: return False else: return True n = int(sys.argv[1]) if is_prime(n): print(n, 'is prime') else: print(n, 'is not prime')
-
def uniq(seq): have = set() ret_l = [] for element in seq: if element not in have: ret_l.append(element) have.add(element) return ret_l l = [4, 2, 4, 5, 6, 7, 8, 4, 2, 8, 9] uniq_l = uniq(l) for i in uniq_l: print(i) # 4 # 2 # 5 # 6 # 7 # 8 # 9
Large group exercise (extending until course finish). Something with CSV files. File IO for a purpose.
Day 3¶
Cold start in the morning:
uniq()
transformed into generatorwith
is
Continue with the group exercise. Moved the code over to Github last evening, starting with a short Git intro.
Day 4¶
Use
collections.namedtuple
for ourdict
objects that we use as records.Test driven development
OO
Links¶
Pandas: read_excel(). Makes sense to look into: the
converters
parameter, for example, looks like it would offer a cool opportunity to hook in our dumbstr("123,456")
(note the comma) ->float(123.456)
conversions.