Adressbuch

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
IhrInformatikLarrys
User
Beiträge: 2
Registriert: Dienstag 7. Februar 2017, 08:49

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
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

"Zur Inspiration", is klar... :D

Setz dich vernünftig mit dem Thema auseinander, so wie jeder andere auch. Dann kannst du mit konkreten Fragen zurückkommen.
IhrInformatikLarrys
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. :)
BlackJack

@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.
Benutzeravatar
Cronut
User
Beiträge: 34
Registriert: Sonntag 5. Februar 2017, 09:50
Wohnort: HRO, GER

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
“Clean code always looks like it was written by someone who cares.” (Michael Feathers)
Check out: https://awesome-python.com/
Benutzeravatar
noisefloor
User
Beiträge: 3843
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,...).
Das mit dem Style-Guide etc. ist vielleicht erstmal too much.
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.

Gruß, noisefloor
Benutzeravatar
pixewakb
User
Beiträge: 1407
Registriert: Sonntag 24. April 2011, 19:43

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.
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.

Funktion unserer Wahl: Z. B. Geburtstagserinnerer, Speicherfunktion, Duplikate-Suche oder oder oder...
Benutzeravatar
Cronut
User
Beiträge: 34
Registriert: Sonntag 5. Februar 2017, 09:50
Wohnort: HRO, GER

noisefloor hat geschrieben:
Das mit dem Style-Guide etc. ist vielleicht erstmal too much.
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.
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.

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/
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

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)
:twisted:
BlackJack

@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. :-)
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@BlackJack
Stimmt schon, war mir nur zu nah an einer sinnvollen Lösung ;)
Antworten