Seite 1 von 1

neffe vs onkel part 2

Verfasst: Freitag 9. November 2007, 10:50
von blackmamba28

Code: Alles auswählen


import pickle

def anlegen(charts):
    interpret=raw_input("Interpret: ")
    while interpret:
        titel=raw_input("Titel: ")
        stmmnzhl=input("Stimmenzahl: ")
        hit=[interpret,titel,stmmnzhl]
        charts.append(hit)
        print " "
        interpret=raw_input("Interpret: ")

def speichern(charts):
    hitlist=file("Charts.txt","w")
    pickle.dump(charts,hitlist)
    hitlist.close()

def ausgeben(charts):
    for hit in charts:
        print hit

leute wo ist der fehler bei mir

Verfasst: Freitag 9. November 2007, 11:23
von windner
Das ist schon eher gemein: du hast ja einen Python-Interpreter, der dir den Fehler sagt, aber uns verschweigst du ihn...
hitlist=file("Charts.txt","w")
Doch lieber open() statt file()?

Verfasst: Freitag 9. November 2007, 11:39
von Jona
ich habe keine lust mehr dir zu helfen
du gehst überhaupt nicht auf anregungen / fragen von uns ein.
liest du die antworten überhaupt?
du gibtst dir keinerlei mühe beim stellen der fragen.

Verfasst: Freitag 9. November 2007, 11:40
von BlackJack
Pickle-Dateien sollte man im Binärmodus öffnen. `stmmnzhl` ist eine schreckliche Verstümmelung um drei Buchstaben zu sparen. Und die Schleife zur Eingabe der Daten hätte ich als ``while True:`` Schleife geschrieben die bei einer leeren Eingabe für den Interpreten mit ``break`` verlassen wird.

`input()` sollte man nicht verwenden weil da beliebiger Python-Code eingegeben werden kann, der dann ausgeführt wird.

Verfasst: Freitag 9. November 2007, 11:47
von gerold
windner hat geschrieben:Doch lieber open() statt file()?
Hallo windner!

Das macht keinen Unterschied.

mfg
Gerold
:-)

Verfasst: Freitag 9. November 2007, 12:10
von windner
Und die Schleife zur Eingabe der Daten hätte ich als ``while True:`` Schleife geschrieben die bei einer leeren Eingabe für den Interpreten mit ``break`` verlassen wird.
Dabei hast du mir erst beigebracht, dass das schöner mit iter(raw_input(), '') geht. :wink:

@gerold:
Stimmt. Wie gehts btw den C-Extensions?

Re: neffe vs onkel part 2

Verfasst: Freitag 9. November 2007, 12:18
von keppla
blackmamba28 hat geschrieben:leute wo ist der fehler bei mir
Dass du Fragen stellst, die auf: "ratet mal, was meine Frage ist" hinauslaufen.

Der gepostete code hat keine syntaxfehler und tut nichts. Also keine Fehler in Sicht.
Wenn du eine Frage stellst, und möchtest, dass man dir hilft,
- beschreibe den Sollzustand ("möchte einen Whopper haben")
- beschreibe deinen Lösungsansatz ("ich geh nach BurgerKing, sage, "ich will essen")
- beschreibe den Istzustand ("ich bekomme Fritten").

Deine Problembeschreibung läuft zZ nur auf "ich geh nach BurgerKing" hinaus. Du zeigst uns deinen (?) Lösungsansatz, und behauptest, er sei fehlerhaft.

Verfasst: Freitag 9. November 2007, 12:41
von BlackJack
@windner: Das fände ich da ehrlich gesagt nicht schöner. So eine Zeile sieht nach "iteriere über die Standardeingabe" aus, aber in der Schleife würden dann "ausser der Reihe" Daten aus dem Iterator durch die anderen Lesebefehle entnommen. Der Zusammenhang ist nicht so offensichtlich.

Wenn, dann hätte ich das eher so geschrieben:

Code: Alles auswählen

input_iterator = iter(raw_input, '')
for artist in input_iterator:
    title = input_iterator.next()
    votes = int(input_iterator.next())
Aber hier sieht man schon das Problem, dass keine Prompts ausgegeben werden. Der übliche Quelltext sieht eher so aus:

Code: Alles auswählen

while True:
    artist = raw_input('Artist: ')
    if not artist.strip():
        break
    title = raw_input('Title: ')
    votes = int(raw_input('Votes: '))
Wobei ich die Eingabe der Stimmen noch in eine Funktion verfrachten würde, die auf falsche Eingaben eingeht.

Verfasst: Donnerstag 15. November 2007, 02:39
von windner
Die letzte Variante ist wirklich gut. Mir ist noch nichts klareres eingefallen.
Aber die Endlosschleifen finde ich (aufgrund seltsamer psychischer Defekte?) nicht schön.

Verfasst: Donnerstag 15. November 2007, 09:57
von BlackJack
Das wird von vielen, sogar Fanboys :-), als etwas unschön angesehen, aber sämtliche Vorschläge so etwas wie eine ``do…while``-Schleife in die Python-Syntax einzubauen sehen noch viel ("komischer"|(eigen|fremd)artiger) aus.