Neuling braucht Hilfe Pytonskript

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
framecode
User
Beiträge: 5
Registriert: Mittwoch 24. November 2010, 21:44

Ich habe angefangen mich mit Python zu beschäftigen und habe folgende Aufgabe zu bewältigen:

Ich möchte ein einfaches Pythonskript schreiben, welche eine Datei useradressen.txt mit Zeileneinträgen der Form

Vorname Nachname, Straße, PLZ Stadt

einliest und in einem Dictonary mit einer Liste von Tupeln (Nachname, Vorname) zur jeweiligen Postleitzahl speichert.

Beispiel:

Peter Hans, Hansestr 23, 10001 Berlin
Bach Uwe, Uwestr 10, 10001 Berlin

{'10001':['Hans' , 'Peter'),('Uwe', 'Bach')]}
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

framecode hat geschrieben:Ich möchte ein einfaches Pythonskript schreiben, welche eine Datei useradressen.txt mit Zeileneinträgen der Form

Vorname Nachname, Straße, PLZ Stadt

einliest und in einem Dictonary mit einer Liste von Tupeln (Nachname, Vorname) zur jeweiligen Postleitzahl speichert.
Ich habe nichts dagegen. Von mir aus kannst du das tun.

Solltest du dann einmal konkrete Fragen dazu haben, dann poste hier bitte relevante Codeausschnitte (Python-Tags verwenden) des bestehenden Codes und beschreibe dein Problem und/oder gib die exakte Fehlermeldung an.
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Lies dir doch bitte mal folgende Forenbeiträge durch:

Offener Brief an Pythonneulinge
und
An alle Schüler und Studenten mit Informatikproblemen

Alleine deine Fragestellung impliziert schon, das
a.) du in der Schule oder im Studium mit python arbeitest, beziehungsweise arbeiten sollst
b.) dass ganze eine vom Lehrer / Tutor / was-auch-immer gestellte Aufgabe ist
c.) du zu bequem bist, dich durch das python-tutorial zu arbeiten
I'm not getting paid for being Mr. Nice Guy!
framecode
User
Beiträge: 5
Registriert: Mittwoch 24. November 2010, 21:44

ok werde meinen Ansatz die nächsten Tage posten inklusive Fehlermeldung
fettes thx
framecode
User
Beiträge: 5
Registriert: Mittwoch 24. November 2010, 21:44

Code: Alles auswählen

f1 = file('useradressen.txt' ,'w') # neue Datei

liste = []

Vorname, Nachname = input (" Vorname Nachname: ")
Strasse = input (" Strasse: ")
PLZ, Stadt = input ("PLZ Stadt: ")
liste = liste [(Vorname, Nachname),(Strasse) , (PLZ, Stadt)]

print (liste [0] [1], liste [1] [0])
print (liste [1] [0], liste [1] [1])
print (liste [2] [0], liste [2] [1])

f1.close()
weiter bin ich nicht gekommen möchte ja das mein pytonskript die daten einliest und die liste von tupeln zur jeweiligen plz speichert...
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Ich seh keine Fehlermeldung und das Skript liest auch keine Datei ein, sondern legt eine an.

Benutzt du Python 3? Bei Python 2.x solltest du raw_input verwenden.

Und dann musst du die Eingabe verarbeiten (z.B. durch split).

Files öffnet man in Python eigentlich mit open ;).

Einige Sachen solltest du dir im Tutorial aber einmal anschauen.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

framecode hat geschrieben:

Code: Alles auswählen

f1 = file('useradressen.txt' ,'w') # neue Datei

liste = []

Vorname, Nachname = input (" Vorname Nachname: ")
Strasse = input (" Strasse: ")
PLZ, Stadt = input ("PLZ Stadt: ")
liste = liste [(Vorname, Nachname),(Strasse) , (PLZ, Stadt)]

print (liste [0] [1], liste [1] [0])
print (liste [1] [0], liste [1] [1])
print (liste [2] [0], liste [2] [1])

f1.close()
[*] Methoden die du auf Dateiobjekte ausführen kannst
[*] Dein Unpacking von `PLZ, Stadt` und `Vorname, Nachname` funktioniert nicht wie du es möchtest. Du kannst aber sowas machen:

Code: Alles auswählen

plz, stadt = input("PLZ, Stadt: ").split(',') # dabei muss als Trenner ein Komma benutzt werden
[*] `liste = liste [(Vor …]` funktioniert ebenfalls nicht. Es muss wenn dann schon so lauten:

Code: Alles auswählen

liste = [(Vorname, Nachname), Strasse, (PLZ, Stadt)]
framecode
User
Beiträge: 5
Registriert: Mittwoch 24. November 2010, 21:44

Code: Alles auswählen

f1 = file('useradressen.txt' ,'w') # neue Datei

liste = []

Vorname, Nachname = input (" Vorname, Nachname: ").split(',')
a = raw_input ('Eingeben: ')
Strasse = input (" Strasse: ")
b = raw_input ('Eingeben: ')
PLZ, Stadt = input ("PLZ, Stadt: ").split(',')
c = raw_input ('Eingeben: ')
liste = [(Vorname, Nachname), Strasse, (PLZ, Stadt)]


f1.close()
wie gesagt weiß nicht weiter :? kopfschmerzen
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

framecode hat geschrieben:

Code: Alles auswählen

f1 = file('useradressen.txt' ,'w') # neue Datei

liste = []

Vorname, Nachname = input (" Vorname, Nachname: ").split(',')
a = raw_input ('Eingeben: ')
Strasse = input (" Strasse: ")
b = raw_input ('Eingeben: ')
PLZ, Stadt = input ("PLZ, Stadt: ").split(',')
c = raw_input ('Eingeben: ')
liste = [(Vorname, Nachname), Strasse, (PLZ, Stadt)]


f1.close()
wie gesagt weiß nicht weiter :? kopfschmerzen
Wozu a, b und c? Und welche Python-Version benutzt du denn? Das sieht sehr kaputt aus … Bei Python2 ist input() für sowas gar nicht geeignet, und bei Python3 ist raw_input verboten …?! Und hast du dir meinen Link angeschaut? Da steht doch wie man in Dateien schreibt!
framecode
User
Beiträge: 5
Registriert: Mittwoch 24. November 2010, 21:44

ich verwende die v2.7
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Gut, dann schau dir mal das hier an:
http://docs.python.org/library/functions.html#input hat geschrieben: input([prompt])
Equivalent to eval(raw_input(prompt)).

Warning: This function is not safe from user errors! It expects a valid Python expression as input; if the input is not syntactically valid, a SyntaxError will be raised. Other exceptions may be raised if there is an error during evaluation. (On the other hand, sometimes this is exactly what you need when writing a quick script for expert use.)
If the readline module was loaded, then input() will use it to provide elaborate line editing and history features.

Consider using the raw_input() function for general input from users.
Also: Statt `input("Strasse, Hausnummer")` eher `raw_input("Strasse, Hausnummer")`. Und dann schau dir einfach mal an, wie man in Dateien schreibt. Wenn du nicht weißt, wie man sucht: Google.
EDIT: Aber wo du schon bei nem direkten Link zur Doku nicht schaust … `file.write()` mehr sag ich nicht.
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Du solltest dir das Tutorial zu Gemüte führen. Eine fertige Lösung wirst du hier nicht bekommen.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Antworten