"Hausaufgabenfragen", evtl. könnt/wollt ihr helfen

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
Benutzeravatar
Damaskus
Administrator
Beiträge: 995
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

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

Allerdings empfehl ich dir hier noch einen wichtigen Artikel für dich
http://www.python-forum.de/topic-1689.html

Gruß
Damaskus
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

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 ;)
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Zuletzt geändert von EyDu am Dienstag 18. September 2007, 07:13, insgesamt 1-mal geändert.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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]

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

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 :lol:

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?)
BlackJack

Wenn Du nichts gegen ein Semikolon hast könnte man sicher in Python 2.5 die ``with``-Anweisung importieren. :-)
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

nun bringt ihn doch nicht total aus der Fassung ^^
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Anstelle von w würde ich wb empfehlen. Habe da so meine Erfahrungen machen müssen.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
blackmamba28
User
Beiträge: 26
Registriert: Freitag 14. September 2007, 09:58
Wohnort: bonn

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 :lol:

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 ??
blackmamba28
User
Beiträge: 26
Registriert: Freitag 14. September 2007, 09:58
Wohnort: bonn

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
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Noch ein Tip: Überleg mal, ob ein Dict nicht besser wäre als eine Liste.
BlackJack

Nicht wenn auf dem Aufgabenzettel Liste vorgeschrieben ist. ;-)
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

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.
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.
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

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