Seite 1 von 1
"Hausaufgabenfragen", evtl. könnt/wollt ihr helfen
Verfasst: Montag 17. September 2007, 20:47
von Damaskus
.. ok vllt habe ich mit meinen beleidigungen auch übertrieben
bitte entschuldigt
ich bin normalerweise keine böser mensch
und ihr habt mich glaub falsch verstanden
ich bin neu auf der schule und hab noch nicht so viel kontakt
zu den anderen im informatik kurs
aber langsam geht das
und zum fach informatik ich hab normalerweise sozialwissenschaften gewähllt, doch der kurs war schon voll weil ich erst 2 wochen nach den sommerferien mich in die schule angemeldet habe... ist ja jetzt egal
also ich hab wirklich probleme in informatik und ich habe meine mitschüler gefragt, doch die haben sogar selber probleme damit.
ich habe sogar versucht
ich bin nciht faul und das intressiert mich auch
ich zeige mal was ich bis jetzt alles so geleistet habe :
Code: Alles auswählen
# paul
import pickle
liste=[]
name=raw_input("Bitte den Namen eingeben:")
vorname=raw_input("Bitte den Vornamen eingeben:")
alter=raw_input("Bitte das Alter eingeben:")
haarfarbe=raw_input("Bitte die Haarfabe eingeben:")
größe=raw_input("Bitte die Größe eingeben:")
person=[name,vorname,alter,haarfarbe,größe]
while name:
person.append(person)
person.append(name)
person.append(vorname)
person.append(haarfarbe)
person.append(größe)
liste.append(person)
name=raw_input("Name der Person eingeben:")
vorname=raw_input("Vorname der Person eingeben:")
alter=raw_input("Alter der Person eingeben:")
haafarbe=raw_input("Haafarbe der Person eingeben:")
größe=raw_input("Größe der Person eingeben:")
print person
personendatei=file ("Personenbeschreibungsdatei.txt","w")
pickle.dump(liste,personendatei)
personendatei.close()
ich hoffe ihr helft mir noch
auch wenn es anfangs nciht so gut gelaufen ist
Mfg
Paul
/EDIT by Damaskus
Hier jetzt bitte keine neue Postings mehr zum Thema Hausaufgaben.
Ich glaube er hats verstanden.
Hab jetzt mal eine PN von blackmamba hier veröffentlicht!
Er entschuldigt sich und fragt ob ihr ihm doch noch helft.
Auch wenn sein Start hier nicht ganz so gelungen ist.
@blackmamba:
Ich werd morgen mal über deinen Code fliegen und schauen ob ich dir einige Tipps geben kann
Allerdings empfehl ich dir hier noch einen wichtigen Artikel für dich
http://www.python-forum.de/topic-1689.html
Gruß
Damaskus
Verfasst: Montag 17. September 2007, 21:29
von gerold
Hallo blackmamba!
Dann fangen wir mal an!!!
Um schneller zum Ziel zu kommen, schreibe ich hier einfach ein paar Gedanken zusammen.
- Um Umlautprobleme am Anfang komplett zu vermeiden, so lange du noch nicht einmal ein lauffähiges Programm zusammen bringst -->
verwende keine Umlaute. Weder als Variablenamen noch innerhalb von Anführungszeichen.
- Jedes Python-Programm sollte im Kopf das Encoding-Cookie stehen haben. Das gibt weniger Probleme mit Umlauten.
- Lesen:
--
http://www.python-forum.de/topic-5095.html
--
http://www.python-forum.de/topic-6157.html
- Einrückungen sind bei Python besonders wichtig. Diese kennzeichen einen zusammengehörenden Block.
Code: Alles auswählen
i = 0
while i < 10:
print i
i += 1 # entspricht i = i + 1
print "Fertig"
Wie man hier sieht, ist die "print"-Zeile und die "i += 1"-Zeile um vier (4) Leerzeichen eingerückt. Diese beiden zeilen gehören zur While-Schleife. Die 'print "Fertig"'-Zeile gehört nicht mehr zur While-Schleife und wird erst ausgeführt, wenn die While-Schleife vollständig durchlaufen wurde.
Wichtigster Lesestoff für Anfänger:
http://starship.python.net/crew/gherman ... nline/tut/
Weitere Links:
http://gerold.bcom.at/python/python_links/
mfg
Gerold

Verfasst: Dienstag 18. September 2007, 00:31
von nkoehring
Hi... schoen das hier jetzt ein freundliches Level aufkommt.
Dein Code ist ein wenig problematisch. Du solltest dich (wie auch die anderen hier bereits bemerkten) dringend mit den grundlegenden Dingen in Python befassen.
Ach und koenntest du bitte die genauen Aufgabenstellungen posten? Ich werd aus dem, was im ersten Thread steht nicht so wirklich schlau...
Waer doch gelacht, wenn wir dir nicht Python wenigstens grundlegend beibringen koennten

Re: "Hausaufgabenfragen", evtl. könnt/wollt ihr he
Verfasst: Dienstag 18. September 2007, 07:11
von EyDu
Ich rate einfach mal, wie ich vermute wie der Code aussehen soll. Das wäre nämlich nur noch ein recht kleiner Schritt:
Code: Alles auswählen
import pickle
personen=[] #"liste" umgenannt in "personen"
name = True
while name:
name=raw_input("Name der Person eingeben:")
vorname=raw_input("Vorname der Person eingeben:")
alter=raw_input("Alter der Person eingeben:")
haafarbe=raw_input("Haafarbe der Person eingeben:")
groesse=raw_input("Groesse der Person eingeben:")
person = (name, vorname, alter, haarfarbe, groesse)
personen.append(person)
personendatei=file ("Personenbeschreibungsdatei.txt","w")
pickle.dump(personen,personendatei)
personendatei.close()
Kann man auf jeden Fall noch etwas verbessern, aber so versteht man wohl am meisten.
Verfasst: Dienstag 18. September 2007, 07:13
von jens
Da eine Liste verwendet wurde, empfehle ich mal das Wiki zu lesen: [wiki]Tutorial/Listen[/wiki]
Ansonsten gibt es noch allgemein gute Seiten:
[wiki]Tutorial[/wiki]
[wiki]FAQ[/wiki]
Re: "Hausaufgabenfragen", evtl. könnt/wollt ihr he
Verfasst: Dienstag 18. September 2007, 16:51
von schlangenbeschwörer
EyDu hat geschrieben:
Kann man auf jeden Fall noch etwas verbessern, aber so versteht man wohl am meisten.
Hi,
ja verbessern kann man noch was, und wenn man python lernt, sollte man es vlt. nicht mit verbesserbarem code machen, wobei man natürlich erstmal das prinzip verstehen sollte...
Wenns verstanden ist, kann man aber schön kürzen.
Die vielen raw_inputs finde ich am unschönsten.
Code: Alles auswählen
import pickle
personen=[]
name = True
while name:
person = []
for angabe in ("Name", "Vorname", "Alter", "Haafarbe","Groesse"):
person.append(raw_input("%s der Person eingeben:" %angabe))
personen.append(tuple(person))
personendatei=file ("Personenbeschreibungsdatei.txt","w")
pickle.dump(personen,personendatei)
personendatei.close()
edit:
Es geht natürlich auch noch kürzer, aber dann wirds wieder unschön
Code: Alles auswählen
__import__("pickle").dump([tuple([raw_input("%s der Person eingeben"%a) for a in ("Name", "Vorname", "Alter", "Haafarbe","Groesse")]) for i in xrange(int(raw_input("Wie viele Personen sollen eingefuegt werden?")))], file("Pbd.txtt", "w"))
(kann man die Datei noch schließen?)
Verfasst: Dienstag 18. September 2007, 17:42
von BlackJack
Wenn Du nichts gegen ein Semikolon hast könnte man sicher in Python 2.5 die ``with``-Anweisung importieren.

Verfasst: Dienstag 18. September 2007, 18:44
von nkoehring
nun bringt ihn doch nicht total aus der Fassung ^^
Verfasst: Dienstag 18. September 2007, 19:27
von veers
Anstelle von w würde ich wb empfehlen. Habe da so meine Erfahrungen machen müssen.
Re: "Hausaufgabenfragen", evtl. könnt/wollt ihr he
Verfasst: Mittwoch 19. September 2007, 08:28
von blackmamba28
schlangenbeschwörer hat geschrieben:EyDu hat geschrieben:
Kann man auf jeden Fall noch etwas verbessern, aber so versteht man wohl am meisten.
Hi,
ja verbessern kann man noch was, und wenn man python lernt, sollte man es vlt. nicht mit verbesserbarem code machen, wobei man natürlich erstmal das prinzip verstehen sollte...
Wenns verstanden ist, kann man aber schön kürzen.
Die vielen raw_inputs finde ich am unschönsten.
Code: Alles auswählen
import pickle
personen=[]
name = True
while name:
person = []
for angabe in ("Name", "Vorname", "Alter", "Haafarbe","Groesse"):
person.append(raw_input("%s der Person eingeben:" %angabe))
personen.append(tuple(person))
personendatei=file ("Personenbeschreibungsdatei.txt","w")
pickle.dump(personen,personendatei)
personendatei.close()
edit:
Es geht natürlich auch noch kürzer, aber dann wirds wieder unschön
Code: Alles auswählen
__import__("pickle").dump([tuple([raw_input("%s der Person eingeben"%a) for a in ("Name", "Vorname", "Alter", "Haafarbe","Groesse")]) for i in xrange(int(raw_input("Wie viele Personen sollen eingefuegt werden?")))], file("Pbd.txtt", "w"))
(kann man die Datei noch schließen?)
HEy danke euch allen
besonders dir !!
ich muss die person am ende ausgeben können
also am ende sollen die angaben der personen aufgelistet stehen
mach man das mit print ??
Verfasst: Mittwoch 19. September 2007, 08:33
von blackmamba28
nkoehring hat geschrieben:Hi... schoen das hier jetzt ein freundliches Level aufkommt.
Dein Code ist ein wenig problematisch. Du solltest dich (wie auch die anderen hier bereits bemerkten) dringend mit den grundlegenden Dingen in Python befassen.
Ach und koenntest du bitte die genauen Aufgabenstellungen posten? Ich werd aus dem, was im ersten Thread steht nicht so wirklich schlau...
Waer doch gelacht, wenn wir dir nicht Python wenigstens grundlegend beibringen koennten

Die aufgaben lauten:
A:
1.) Sie entpickeln ihre liste nach abfrage eines Nachnamens.
Geben sie das geburtsdatum bzw. die klasse der betreffenden personen aus.
2.)
Nach abgfrage einer klasse geben sie alle mitglieder der klasse aus.
3.)
Nach abfrage eines nachnamens entfernen sie die person(den Tupel)
aus der liste. Methode: liste.remove(person)
4.)
Sie fügen einen neuen Personen-Tupel an.
5.)
Nach abfrage eines nachnamens ändern sie die klasse dieser person.
überlegen sie, wie dies mit einem tupel klappen könnte.
B:
gestalten sie für die listen-operation
ein menü: Anlegen, abspeichern, ausgeben, ändern, suchen + ausgeben
löschen , spechern
also am freitag is abgabe wäre noch wenn ich min. 1-2 aufgaben fertig stelle
also der code muss so geändert werden, dass die vorgegeben angaben von 1 bis 5 erfüllt werden
Re: "Hausaufgabenfragen", evtl. könnt/wollt ihr he
Verfasst: Mittwoch 19. September 2007, 08:50
von Rebecca
blackmamba28 hat geschrieben:
ich muss die person am ende ausgeben können
also am ende sollen die angaben der personen aufgelistet stehen
mach man das mit print ??
Ja, aber warum probierst du das nicht einfach aus? Das geht doch viel schneller als hier nachzufragen.
Zu Aufgabe 1: Die in dem obigen Programm gepickelte Personenliste kannst du mit
pickle.load(...) wieder laden. Dann musst du dir ueberlegen, wie du eine Person mit einem bestimmten Namen aus der Personenliste rausholen kannst.
Verfasst: Mittwoch 19. September 2007, 17:43
von schlangenbeschwörer
Noch ein Tip: Überleg mal, ob ein Dict nicht besser wäre als eine Liste.
Verfasst: Mittwoch 19. September 2007, 19:45
von BlackJack
Nicht wenn auf dem Aufgabenzettel Liste vorgeschrieben ist.

Verfasst: Donnerstag 20. September 2007, 17:03
von schlangenbeschwörer
BlackJack hat geschrieben:Nicht wenn auf dem Aufgabenzettel Liste vorgeschrieben ist.

Ja, kommt drauf an, ob mit Liste der Typ gemeint ist, oder nur Liste wie "Einkaufsliste" oder so, also allgemein eine Ansammlung von Daten.
Wenn man die Personen über den Nachnamen finden soll, wär das so am einfachsten. wenn man eine Liste mit Tupeln hat, muss man ja immer suchen...
Man könnte auch eine Parallelstuktur verwenden, also in einem Dict nur die Indexe speichern.
Code: Alles auswählen
l = [("nachname1", "vorname", ...), ("nachname2", ...),...]
d = {"nachname1": 0, "n2":1, ...}
Jedoch ist das auch etwas problematisch oder kann es zumindest werden.
Verfasst: Donnerstag 20. September 2007, 19:48
von BlackJack
Ich denke mal Liste ist absichtlich gewählt worden, weil nicht nur nach Namen gefragt wird. Also muss man so oder so eine lineare Suche programmieren. Und sowie man zwei mit dem gleichen Nachnamen in der Klasse hat, funktioniert ein Dictionary über Nachnamen auch nicht mehr.
Und Parallelstrukturen für Indexe sollte man in Klassen kapseln ─ so weit sind die aber offensichtlich noch nicht.
Verfasst: Donnerstag 20. September 2007, 20:43
von schlangenbeschwörer
Bei "zwei mit dem gleichen Nachnamen" hat man bei der Liste auch ein Problem (man kann die zwar speichern aber nicht eindeutig wiederfinden, wobei man dann über eine 2 Eigenschafft auswählen müsste, was aber wiederum auch mit nem dict ginge, wenn man an die namen ne fortlaufende zahl oderso dranhängt und die dann entsprechend mitverarbeitet).