#!/usr/bin/python # -*- coding: iso-8859-1 -*- # # Python Beispiele zu # http://www.thomas-guettler.de/vortraege/python/einfuehrung.html # # (c) 2003-2008 Thomas Güttler # http://www.thomas-guettler.de/ # # Beispiel ZINSEN: # Ein Versicherungsvertreter verspricht dir, dass du einen großen # Betrag bekommst, wenn du 35 Jahre jährlich 900 Euro einzahlst. Du # willst nun wissen, wieviel Geld du hättest, wenn du keine # Rentenversicherung abschließt, sondern das Geld mit 5 Prozent # Zinsen anlegst. Vielleicht gibt es dafür eine Formel, aber iterativ # (in einer Schleife) lässt sich das auch leicht berechnen. sum=0 for i in range(35): sum*=1.05 # 5 Prozent Zinsen sum+=900 print "Jahr %s Betrag: %s" % (i+1, sum) #--------------------------------------------------------------------- #Beispiel FIFO: #FIFO (first in first out) (Queue) #Vergleich: Autobahntunnel # l=[] # Nehme eine leere Liste for i in range(10): l.append(i) # An Liste anhängen print l while l: # Solange 'l' nicht leer ist ... print l.pop(0) # Entferne erstes Element der Liste #Ergebnis: 0, 1, 2, ... #--------------------------------------------------------------------- #Beispiel FILO: #FILO (first in last out) (Stack) #Vergleich: Stapel von Münzen # l=[] for i in range(10): l.append(i) while l: print l.pop() # Entferne letztes Element der Liste #Ergebnis: 9, 8, 7, ... #--------------------------------------------------------------------- #Beispiel ENDE: #Das dicke Ende # file="foo.jpg" if file[-4:]==".jpg": #unschön print "Foto" if file.endswith(".jpg"): #besser, analog "startswith()" print "Foto" #--------------------------------------------------------------------- #Beispiel DIE WAHRHEIT: #Was ist wahr und was ist falsch? #Folgende Bedingungen sind wahr: # if True: print "wahr" if 1: print "wahr" if -1: # Alle Zahlen außer 0 sind wahr print "wahr" if "0": # Nichtleere Zeichenkette print "wahr" if "False": # Nichtleere Zeichenkette print "wahr" if [[]]: # Nichtleere Liste print "wahr" if not False: print "wahr" if not 0: print "wahr" if not []: # Leere Liste print "wahr" if not {}: # Leeres Dictionary print "wahr" if not "": # Leere Zeichenkette print "wahr" if not None: print "wahr" #--------------------------------------------------------------------- #Beispiel REFERENZ: #Referenz vs. Kopie # list1=[1, 2, 3, 4] list2=list1 # Zwei Referenzen zeigen auf eine Liste list2[0]=5 print list1==list2 # --> 1 list1=[1, 2, 3, 4] list2=list1[:] # Erstelle eine Kopie der ersten Liste list2[0]=5 print list1==list2 # --> 0 #--------------------------------------------------------------------- #Beispiel UNIQUE a: #Doppelte Einträge aus einer Liste entfernen: mylist=[1, 1, 7, 7, 7, 6, 2, 3, 4, 4, 4, 5] unique={} # dictionary for item in mylist: unique[item]=1 mylist=unique.keys() mylist.sort() print mylist # --> [1, 2, 3, 4, 5, 6, 7] #Beispiel UNIQUE b: #Mit Python2.3 ist das entfernen von doppelten #Einträgen einfacher: mylist=[1, 1, 7, 7, 7, 6, 2, 3, 4, 4, 4, 5] try: # ab Python 2.4 set except NameError: # Python 2.3 from sets import Set as set myset=set(mylist) mylist=list(myset) mylist.sort() print mylist # --> [1, 2, 3, 4, 5, 6] #--------------------------------------------------------------------- #Beispiel SORTDICT: #Ein Dictionary sortieren. #Da Dictionaries nicht sortiert gespeichert werden, #will man sie für die Ausgabe ggf. sortieren: mydict={"a": ["Auto", "Ampel"], "b": ["Bus", "Banane"], "c": ["Chemnitz", "Chaos"], "d": ["Dame", "Diesel"], "e": ["Esel"]} print "Unsortiert:", mydict items=mydict.items() items.sort() for buchstabe, woerter in items: print "%s: %s" % (buchstabe, woerter) #--------------------------------------------------------------------- #Beispiel SORTITEMS a: #Sortieren einer Liste von Paaren. #Die Einträge bestehen aus einer ID und einem Namen. #Die Liste soll anhand der Namen sortiert werden. # mylist=[ (1, "Dresden"), (2, "Chemnitz"), (3, "Bayreuth"), (4, "Freiburg"), (5, "Berlin")] def mycmp(a, b): # Bsp: a==(1, "Dresden") und b==(2, "Chemnitz") # Diese Compare (Vergleichs) Funktion, vergleicht # jeweils die zweiten Einträge in der Liste. return cmp(a[1], b[1]) # Es wird eine Referenz auf unsere Sortierfunktion übergeben. # Analog einem Funktionspointer in C. mylist.sort(mycmp) print mylist # Erläuterung: Die built-in Funktion "cmp" vergleicht zwei # Elemente. Sie gibt 0 zurück falls beide identisch sind, -1 falls das # erste kleiner ist, und 1 falls das erste Element größer ist. # Beispiele: # cmp( (1, 2, 3), (1, 2, 3) ) ---> 0 # cmp( (1, 2, 3), (1, 2) ) ---> 1 # cmp( (1, 100), (2, 1) ) ---> -1 # cmp( (1, 2), (1, 3) ) ---> -1 #Beispiel SORTITEMS b: #Wenn "mycmp" auf Daten zugreifen muss, die nicht #in den Argumenten a oder b stehen, kann man mit #"Decorate Sort Undecorate" (DSU) arbeiten, das bei großen Listen #auch schneller ist als "mycmp" #Siehe auch http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52234 names={ 1: "Dresden", 2: "Chemnitz", 3: "Bayreuth", 4: "Freiburg"} decorated=[] for key, stadt in names.items(): decorated.append((stadt, key)) decorated.sort() # Es wird nach Städten sortiert ids=[] for stadt, key in decorated: ids.append(key) print ids # ids ist nun entsprechend den zugehörigen Werten in "names" sortiert #--------------------------------------------------------------------- ##Beispiel DOWNLOAD: ##Herunterladen eine Webseite: # #import urllib2 #fd=urllib2.urlopen("http://www.python.org/") #content=fd.read() #fd.close() #print content # #--------------------------------------------------------------------- ##Beispiel WEBBROWSER: ##Anzeigen der heruntergeladene Seite in einem Browser: ##Es wird der Standard-Browser des System genommen (Netscape, Mozilla, IE, ...) # #import tempfile #import webbrowser #htmlfile=tempfile.mktemp("foo.html") #fd=open(htmlfile, "w") #fd.write(content) #fd.close() #webbrowser.open("file://%s" % htmlfile) #--------------------------------------------------------------------- #Beispiel ISOTIME: #Datum im ISO-Format (2003-12-31 23:59:59) # import time print "Es ist jetzt: %s" % time.strftime("%Y-%m-%d %H:%M:%S") #--------------------------------------------------------------------- # Beispiel CHARCOUNT: # Zähle wie oft die Zeichen einer Datei vorkommen datei="beispiele.py" fd=open(datei) inhalt=fd.read() # Lese die gesamte Datei countdict={} # Erstelle leeres Dictionary for char in inhalt: # char (character) == Zeichen old=countdict.get(char, 0) # Falls Zeichen noch nicht gezählt, nehme die Null old+=1 # Zähle um eins hoch countdict[char]=old # Speichere Zähler im Dictionary (char == key (Schlüssel) items=countdict.items() # Liste [(key1, value1), (key2, value2), ...] items.sort() # Sortiere die Liste nach den Zeichen for char, count in items: if char=="\n": char="\\n" # Newline als \n ausgeben. print "Zeichen %s: %4d" % ( # %4d --> rechtsbündig (vier Zeichen) char, count) #--------------------------------------------------------------------- #Beispiel ISSTRING #Ist ein Objekt eine Zeichenkette? # myobj='abc' if isinstance(myobj, basestring): print 'Ja, das ist eine Zeichenkette: %s' % myobj #--------------------------------------------------------------------- #Beispiel UNICODE: #Zeichensatz-Konvertierung: # text="Der in deutschland übliche Zeichensatz: iso-8851-1 (latin1)" u=unicode(text, "latin1") utf8=u.encode("utf8") # default Zeichensatz von XML #--------------------------------------------------------------------- #Beispiel EINMALEINS: #Das Einmaleins als HTML-Tabelle # import tempfile import webbrowser rows=[] heading=[] for i in range(1, 11): heading.append('
| %s |
|---|