Created
July 7, 2012 18:26
-
-
Save Lysander/3067571 to your computer and use it in GitHub Desktop.
Mein Lösung zur Probeklausur aus dem Thread: http://www.python-forum.de/viewtopic.php?f=1&t=29616&start=30
We can make this file beautiful and searchable if this error is corrected: It looks like row 2 should actually have 1 column, instead of 2. in line 1.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ISBN;Verlag;Titel;Stand;Preis;Bestand | |
978-3768825825;Delius Klasing;MV – Bornholm;2009-01;54,90;2 | |
978-3768832021;Delius Klasing;MV – Bornholm;2011-03;54,90;13 | |
978-3892255598;Edition Maritim;Rund Rügen;2008-03;29,90;15 | |
978-3892252368;Delius Klasing;Küstenhandbuch MV;2006-03;29,90;3 | |
978-3980672016;Quick Maritim Medien;Törnplaner/-atlas Peene, Oder, Bodden;2006-04;25,00;5 | |
978-3768831017;Delius Klasing;Kieler Bucht und Rund Fünen (2010);2010-03;69,90;17 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
def erzeugeZeichenListe(text): | |
""" Aufgabe 1b """ | |
return list(set(text)) | |
def werteAus(genders): | |
""" Aufgabe 2a """ | |
from collections import Counter | |
for index, gender in enumerate(genders): | |
genders[index] = gender if gender in ("w", "m") else None | |
return tuple(Counter(genders).values()) | |
def neuesKind(kinderliste): | |
""" Aufgabe 2b """ | |
name = vorname = geschlecht = "" | |
while name == "": | |
name = input("Nachname: ") | |
while vorname == "": | |
vorname = input("Vorname: ") | |
while True: | |
geschlecht = input("Geschlecht: ").lower() | |
if geschlecht in ("m", "w"): | |
break | |
kinderliste.append([name, vorname, geschlecht]) | |
def cut_words(text, offset=5): | |
""" Aufgabe 3 """ | |
return " ".join(word[:offset] for word in text.split()) | |
def load(filename): | |
""" Helfer-Funktion zum Datenimport für Aufgabe 4 """ | |
import csv | |
with open(filename) as f: | |
return list(csv.DictReader(f, delimiter=";")) | |
def parsestring(data): | |
""" Helfer-Funktion zum Datenimport für Aufgabe 4 """ | |
import csv | |
return list(csv.DictReader(data.split("\n"), delimiter=";")) | |
def inventur(maritim_maps): | |
""" Aufgabe 4b """ | |
return sum(int(item["Bestand"]) * float(item["Preis"].replace(",", ".")) | |
for item in maritim_maps) | |
def main(): | |
# Test Aufgabe 1b) | |
print("Test Aufgabe 1b)") | |
zeichenkette = "baabcad" | |
print(erzeugeZeichenListe(zeichenkette)) | |
print() | |
# Test Aufgabe 2a) | |
print("Test Aufgabe 2a)") | |
genders = ["w", "w", "m", "w", "m", "w", "m", "m", "s", "w", "w", "w", | |
"w", "m", "m"] | |
counts = werteAus(genders) | |
print(genders, counts) | |
print() | |
# Test Aufgabe 2b) | |
print("Test Aufgabe 2b)") | |
kinderliste = [] | |
#neuesKind(kinderliste) | |
print(kinderliste) | |
print() | |
# Test Aufgabe 3 | |
print("Test Aufgabe 3") | |
text = """Die ersten Buchstaben eines Wortes sind die Träger der Bedeutung. | |
Die Verständlichkeit eines Satzes ist auch gegeben, wenn von jedem Wort | |
die ersten fünf Buchstaben geschrieben werden. | |
""" | |
print(cut_words(text)) | |
print() | |
# Aufgabe 4a) | |
# Liste aus Dictionaries | |
# - leichter, lesbarer Zugriff; | |
# - leicht aus CSV / JSON zu gewinnen! (`csv.DictReader`) | |
# - direkte Assoziation zwischen Wert und dessen Bedeutung | |
# Beispiel: | |
maritim_maps = [ | |
{ | |
"ISBN": None, | |
"Verlag": None, | |
"Titel": None, | |
"Stand": None, | |
"Preis": None, | |
"Bestand": None, | |
}, | |
{ | |
# usw. | |
} | |
] | |
# Man müsste die Datentypen der einzelnen Werte noch genauer spezifizieren! | |
# (Integer, Date, Decimal, usw) | |
data = """ISBN;Verlag;Titel;Stand;Preis;Bestand | |
978-3768825825;Delius Klasing;MV – Bornholm;2009-01;54,90;2 | |
978-3768832021;Delius Klasing;MV – Bornholm;2011-03;54,90;13 | |
978-3892255598;Edition Maritim;Rund Rügen;2008-03;29,90;15 | |
978-3892252368;Delius Klasing;Küstenhandbuch MV;2006-03;29,90;3 | |
978-3980672016;Quick Maritim Medien;Törnplaner/-atlas Peene, Oder, Bodden;2006-04;25,00;5 | |
978-3768831017;Delius Klasing;Kieler Bucht und Rund Fünen (2010);2010-03;69,90;17 | |
""" | |
maritim_maps = parsestring(data) | |
# oder aus externer Datei: | |
#maritim_maps = load("karten.csv") | |
# Test Aufgabe 4b) | |
print("Test Aufgabe 4b") | |
print(inventur(maritim_maps)) | |
if __name__ == "__main__": | |
main() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment