Uebungsblatt 6 Name: Joe User Tutor: ???? Email: juser@icp.uni-stuttgart.de ========== AUFGABE 6.1 (Funktionen, Rekursionen, Schleifen und Listen) ========== 6.1.1 Python-Funktion fib1: def fib1(n): if n <= 1 : return 1 else: return fib1(n-1) + fib1(n-2) Laufzeiten: ========== 6.1.2 Python-Funktion fib2: def fib2a(n, a, b): if n == 0: return a elif n == 1: return b else: return fib2a(n-1, b, a+b) def fib2(n): return fib2a(n, 1, 1) Laufzeiten: ========== 6.1.3 Python-Funktion fib3: def fib3(n): if n <= 1: return 1 a = 1 b = 1 for i in range(2, n): a, b = b, a+b return a+b Laufzeiten: ========== 6.1.4 Python-Funktion fiblist: # rekursiv def fiblist1(n): if n == 0: return [1] elif n == 1: return [1,1] else: sofar = fibl1(n-1) sofar.append(sofar[-1] + sofar[-2]) return sofar # iterativ def fiblist2(n): if n == 0: return [1] elif n == 1: return [1,1] else: l = [1,1] for i in range(2,n+1): l.append(l[-2] + l[-1]) return l Laufzeiten: ========== AUFGABE 6.2 (Dictionaries, Strings und Module) ========== 6.2.1 Skript: import sys, optparse # Mindestanzahl als Parameter parser=optparse.OptionParser() parser.add_option("-m", "--min", dest="min", type=int, default=100) (options, args) = parser.parse_args() # zaehlen der Woerter occ = {} contents = sys.stdin.read() l = contents.split() for s in l: if s in occ: occ[s] += 1 else: occ[s] = 1 # sortieren der Ausgabe sorted_occ = sorted(occ, key=lambda k: occ[k]) for key in sorted_occ: val = occ[key] if val > options.min: print "%5d %s" % (occ[key], key) ========== 6.2.2 Befehl: > ls -R /usr | python occurence.py --min=500 Ausgabe: 581 ChangeLog 720 COPYING 735 LC_MESSAGES 1202 Makefile 1938 README