Hallo meine Programmiererfreunde,
ich habe große Defizite beim Programmieren mit Python. Daher bitte ich euch mir bei folgenden Problem zu helfen, wir sollen ein Adressbuch in Python erstellen mit den Funktionen 1) Ausgabe einer Info aller Kontakte 2) Hinzufügen eines Kontaktes 3) Suche (und Ausgabe) eines Kontaktes 4)eine Funktion unserer Wahl. Hierzu fehlt mir aber jeglicher Ansatz bzw. die Erfahrung mit diesem Programm um diesen Arbeitsauftrag zu bewältigen. Darum bitte ich euch, dass mir jemand einen fertigen Programmcode (vllt. jemand der diese Aufgabe auch schon mal gemacht hat) schickt, welcher mir als Inspiration für meine Arbeit dienen soll.
Viele Grüße
euer Informatikfreund Nicolas
Adressbuch
Als erstes mal einen Hinweis auf dieses Thema: An alle Schüler und Studenten mit Informatikproblemen.
-
- User
- Beiträge: 2
- Registriert: Dienstag 7. Februar 2017, 08:49
Natürlich kann ich es nachvollziehen, wenn ihr wollt, dass ich mich mehr mit diesem Thema auseinandersetze. Das Problem ist nur, dass ich sehr lange krank war(7 Wochen), wodurch es mir sehr schwer fällt dem Unterricht zu folgen. Durch diese schlechten Umstände bitte ich euch mir bei der Bewältigung der Aufgabe zu helfen.
@IhrInformatikLarrys: Tun wir ja auch gerne. Aber eben nur bei der Bewältigung helfen, und nicht Dir alle Arbeit abnehmen. Arbeite Deine Unterrichtsunterlagen und ein Python-Tutorial durch (in der Python-Dokumentation befindet sich beispielsweise eines), schau Dir den Style Guide for Python Code an. Und dann fang an Dein Programm zu planen und zu implementieren. Falls dabei konkrete Fragen auftauchen, dann kannst Du die hier stellen.
Grundsätzliches vorgehen beim Programmieren ist es das Gesamtproblem in kleinere Teilprobleme zu zerlegen und die Teilprobleme auch wieder zu zerlegen, solange bis die so klein sind, dass man sie mit einer Funktion mit wenigen Zeilen lösen kann. Diese Funktion dann testen, und wenn sie wie gewünscht funktioniert, mit der nächsten fortfahren. Dabei kann man dann in Teillösungen schon vorhandene Teillösungen verwenden. Und irgendwann hat man dann das Gesamtproblem auf diese Weise erschlagen.
Üblicherweise trennt man die Programmlogik von der Benutzerinteraktion. Damit lassen sich die Einzelteile leichter testen und wiederverwenden. Zum Beispiel braucht man das suchen nach einem Adresseintrag nicht nur zum Suchen, sondern auch um sicherzustellen, dass beim hinzufügen kein Eintrag doppelt hinzugefügt wird. Da wäre es dann ungünstig wenn man eine Funktion zum Suchen hat die mit dem Benutzer ”reden” möchte.
Grundsätzliches vorgehen beim Programmieren ist es das Gesamtproblem in kleinere Teilprobleme zu zerlegen und die Teilprobleme auch wieder zu zerlegen, solange bis die so klein sind, dass man sie mit einer Funktion mit wenigen Zeilen lösen kann. Diese Funktion dann testen, und wenn sie wie gewünscht funktioniert, mit der nächsten fortfahren. Dabei kann man dann in Teillösungen schon vorhandene Teillösungen verwenden. Und irgendwann hat man dann das Gesamtproblem auf diese Weise erschlagen.
Üblicherweise trennt man die Programmlogik von der Benutzerinteraktion. Damit lassen sich die Einzelteile leichter testen und wiederverwenden. Zum Beispiel braucht man das suchen nach einem Adresseintrag nicht nur zum Suchen, sondern auch um sicherzustellen, dass beim hinzufügen kein Eintrag doppelt hinzugefügt wird. Da wäre es dann ungünstig wenn man eine Funktion zum Suchen hat die mit dem Benutzer ”reden” möchte.
Hey, etwas Hilfestellung hast du schon bekommen.
Wenn man krank war, muss man halt die freie Zeit, die man hatte (egal ob genossen oder nicht) nachholen. Da kommt man nicht dran vorbei. Mach das lieber jetzt, vielleicht bekommt ihr danach nochmal andere, schwierigere Aufgaben und dann hast du ein noch größeres Problem.
Das mit dem Style-Guide etc. ist vielleicht erstmal too much.
Setz dich mit den Standard-Strukturen von Python auseinander (Variablen, Datentypen, Bedingungen, Schleifen, Funktionen, Methoden, evtl. auch Klassen und Instanzen) und mit den Datenstrukturen (Array, Liste, Dictionary etc.)
Dann schau dir dein Problem an und Identifizere einige Schlagwörter und mach dir klar, was sie Bedeuten. Substantive lassen immer darauf schließen, dass sie in eigenen Datenstrukturen oder Klassen gehalten werden können (Adressbuch, Kontakt)
Prädikate lassen auf Methoden schließen, die du implementieren musst (ausgeben, hinzufügen, suchen)
Mach erstmal einfache Sachen, z.B. einen Namen in einer Variablen speichern und Ausgeben und taste dich langsam ran. Vielleicht macht es dir am Ende sogar Spaß.
Habe mich hier versucht möglichst beginnerfreundlich auszudrücken.
Grüße,
EinInformatikLarry
Wenn man krank war, muss man halt die freie Zeit, die man hatte (egal ob genossen oder nicht) nachholen. Da kommt man nicht dran vorbei. Mach das lieber jetzt, vielleicht bekommt ihr danach nochmal andere, schwierigere Aufgaben und dann hast du ein noch größeres Problem.
Das mit dem Style-Guide etc. ist vielleicht erstmal too much.
Setz dich mit den Standard-Strukturen von Python auseinander (Variablen, Datentypen, Bedingungen, Schleifen, Funktionen, Methoden, evtl. auch Klassen und Instanzen) und mit den Datenstrukturen (Array, Liste, Dictionary etc.)
Dann schau dir dein Problem an und Identifizere einige Schlagwörter und mach dir klar, was sie Bedeuten. Substantive lassen immer darauf schließen, dass sie in eigenen Datenstrukturen oder Klassen gehalten werden können (Adressbuch, Kontakt)
Prädikate lassen auf Methoden schließen, die du implementieren musst (ausgeben, hinzufügen, suchen)
Mach erstmal einfache Sachen, z.B. einen Namen in einer Variablen speichern und Ausgeben und taste dich langsam ran. Vielleicht macht es dir am Ende sogar Spaß.
Habe mich hier versucht möglichst beginnerfreundlich auszudrücken.
Grüße,
EinInformatikLarry
“Clean code always looks like it was written by someone who cares.” (Michael Feathers)
Check out: https://awesome-python.com/
Check out: https://awesome-python.com/
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
was IMHO definitiv noch fehlt ist eine Angabe, ob und wie Daten gespeichert werden sollen. Oder soll das ganze "nur" ohne Datenpersistenz im Speicher "leben" (würde die Implementierung erst mal einfacher machen). Und wenn Datenpersistenz gewünscht ist, gibt es ja auch X Möglichkeiten (Text-Datei, CSV, JSON, SQLite, Pickle,...).
Gruß, noisefloor
was IMHO definitiv noch fehlt ist eine Angabe, ob und wie Daten gespeichert werden sollen. Oder soll das ganze "nur" ohne Datenpersistenz im Speicher "leben" (würde die Implementierung erst mal einfacher machen). Und wenn Datenpersistenz gewünscht ist, gibt es ja auch X Möglichkeiten (Text-Datei, CSV, JSON, SQLite, Pickle,...).
Sehe ich nicht so. Man muss die PEP8 sicherlich nicht in aller Tiefe lesen, aber man sollte schon von Anfang die korrekte Einrücktiefe nutzen, Klassen und Methodennamen gem. Konvention schreiben und sinnvolle und aussagekräftige Variablennamen nutzen.Das mit dem Style-Guide etc. ist vielleicht erstmal too much.
Gruß, noisefloor
Mal laut gedacht: Kontakte würde ich entweder als Liste von Listen bereithalten oder als Wörterbuch (dict) mit Wörterbuch oder Liste. Hinzufügen eines Kontakts klingt nach Objektorientierung, was hier Sinn machen dürfte. Suche und Ausgabe eines Kontaktes - man sollte überlegen, das Wörterbuch in verschiedenen Weisen vorzuhalten oder aber als Liste von Listen, denke ich. Alternativ eine eigene Klasse für einen Kontakt.IhrInformatikLarrys hat geschrieben:1) Ausgabe einer Info aller Kontakte 2) Hinzufügen eines Kontaktes 3) Suche (und Ausgabe) eines Kontaktes 4)eine Funktion unserer Wahl.
Funktion unserer Wahl: Z. B. Geburtstagserinnerer, Speicherfunktion, Duplikate-Suche oder oder oder...
So wie ich den Beitrag von TO lese, will er es gar nicht wirklich verstehen (Komplettlösung gefordert) und möchte nach der Aufgabe auch nie wieder was damit zu tun haben, also ist es im Grunde egal wie sein Code aussieht, wenn er läuft.noisefloor hat geschrieben:Sehe ich nicht so. Man muss die PEP8 sicherlich nicht in aller Tiefe lesen, aber man sollte schon von Anfang die korrekte Einrücktiefe nutzen, Klassen und Methodennamen gem. Konvention schreiben und sinnvolle und aussagekräftige Variablennamen nutzen.Das mit dem Style-Guide etc. ist vielleicht erstmal too much.
Ich bin selbst Verfechter von Clean Code und dem Einhalten von Code Conventions wo es nötig ist. Ich nehme aber an TO hat wahrscheinlich auch nicht mehr sonderlich viel Zeit für die Aufgabe. Wie gesagt, dass wichtigste wird für ihn wohl sein, dass es läuft.
“Clean code always looks like it was written by someone who cares.” (Michael Feathers)
Check out: https://awesome-python.com/
Check out: https://awesome-python.com/
Nicht schön, kann aber alles Geforderte:
Code: Alles auswählen
adressbuch = []
# 2) Hinzufuegen
adressbuch.append('Hans')
adressbuch.append('Else')
# 1) Ausgabe der Eintraege
print adressbuch
# 3) Suche
print 'Hans' in adressbuch
# 4) Funktion der Wahl - Anzahl der Eintraege
print len(adressbuch)
@jerch: Ich wäre wahrscheinlich sogar so weit gegangen ein Wörterbuch zu verwenden. Macht es nicht wesentlich komplexer, aber ein ganz klein wenig nützlicher.