Skip to content

Instantly share code, notes, and snippets.

@Lysander
Created July 7, 2012 18:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Lysander/3067571 to your computer and use it in GitHub Desktop.
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.
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
#!/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