benutzer soll speichern können

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.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Wie es einfacher, robuster und eleganter geht. Du musst dich eben mit den vorgeschlagenen Lösungen beschäftigen, diese verstehen und mit deinem Ansatz vergleichen. Lies unbekannte Dinge nach und spiele ein wenig damit. So lernt man Dinge.
Das Leben ist wie ein Tennisball.
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@mettalqueen: bis jetzt hat noch niemand etwas umgeschrieben. Du hast nach einem Fehler gefragt und die meisten Punkte beziehen sich auf Fehler, die verhindern, dass das Programm "läuft". Daneben solltest Du von Anfang an ein paar Richtlinien mitlernen. Denn ob man jetzt umständliches Zeugs oder das ordentliche Programmieren lernt, macht vom Aufwand her keinen Unterschied.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

mettalqueen hat geschrieben:Das steht aber alles so nicht in meinem Buch und ich bin Anfängerin und finde es scheiße das sihr alles immer schlecht macht
Dein Buch ist doch nicht Deine Grundschullehrerin, die man als Gott gleiches Wesen nie in Frage gestellt hat! Zum einen muss Dein Buch nicht in allen Punkten gut und richtig sein, zum anderen kann ein Buch ja auch nicht alles beinhalten. (Ansonsten würdest Du Dich ja auch gar nicht hier an das Forum wegen Hilfe richten ;-) )

Und wenn in Deinem Buch Funktionen eingeführt werden, wird da sicherlich darauf eingegangen werden, wozu Funktionen so allgemein gut sind und wie man Parameter übergeben und Rückgabewerte erhalten kann. Das ist doch alles kein Zauberkram!

Und Du verwendest ja auch schon reichlich Funktionen aus der Standard Lib. Diese sind doch auch so aufgebaut, dass die eine bestimmte Aufgabe lösen! ``open`` öffnet eine Datei und gibt Dir Objekt zurück, mit welchem Du auf diese Datei zugreifen kannst. ``shuffle`` mischt eine gegebene Sequenz "in place" und ``raw_input`` liest einen String von der Shell ein. Du wirst da kaum Funktionen finden, deren Aufgabe sich so lesen lassen: "Mache dies und das oder das und im Falle X noch dieses dazu und dann gibt das oder jenes zurück".

Und wir machen auch nicht alles schlecht, sondern weisen Dich auf Fehler oder schlechtes Design hin. Das schmälert weder Deinen Wert als Mensch, noch wollen wir Dich als Person schlecht machen oder Deine Anstregungen bewerten. Wir treffen nur Aussagen zu Deinem Code! Aber wir müssen Dich auch nicht loben, um Dich zu motivieren. Das kann mal vorkommen, dass man einem User auch mal ein Lob ausspricht, aber die Regel ist das nicht. Wozu auch? Motivation sollte jeder selber mitbringen und selbst wenn hier zig Postings kommen, die Stil und Vorgehen kritisieren, kannst Du ja dennoch stolz auf Deine bisherige Leistung sein.

Aber eines solltest Du nicht tun: Nämlich Kritik am Code persönlich nehmen!

Wir wollen hier nur helfen, dass *Du* *Deinen* Code verbessern kannst. Nicht mehr und nicht weniger.

Und ich habe auch nicht alles komplett umgeschrieben. Ok, ich habe das auf Englisch formuliert, aber ansonsten habe ich lediglich das Lesen der Muster aus der Datei weggelassen und das Ergebnis nicht *direkt* an ``print`` weitergegeben. Das Mischen und das Zusammenstellen des Ergebnisses ist doch gleich geblieben!

(Für Dich wäre übrigens ``random.sample`` besser geeignet, wenn ich das richtig sehe)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

Ja ich wollte auch nicht böse sein, aber ich war einfach sauer und niedergeschlagen habe den ganzen Tag ununterbrochen dran gearbeitet und das ich noch nicht viel weiß, das weiß ich ja. Es war einfach nur sehr frustrierend. Ein paar verbesserungen habe ich nun auch schon gemacht
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

mettalqueen hat geschrieben:

Code: Alles auswählen

def listeSchreiben():
    print"Gib dein Muster ein"
    musterEingabe = raw_input()
    r.append(e)
Was erwartest du, was bei der letzten zitierten Codezeile passiert?
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

also zeile 1 definiert den neuen Befehl
Zeile 2 sagt was der Benutzer tun soll
Zeile 3 ist nimmt die Tastatur Eingabe auf
Zeile 4 speichert die Eingabe in die Liste.
Aber ich ich habe das schon geändert

Code: Alles auswählen

def listeSchreiben():
    d = open("wuerfelnMuster.txt","w")
    print "Gib dein Muster ein"
    musterEingabe = raw_input()
    musterListe.append(musterEingabe)
    d.writelines(wuerfelMuster.txt)
    d.close()
Zuletzt geändert von Hyperion am Montag 23. März 2015, 17:07, insgesamt 1-mal geändert.
Grund: Code in Python Code Tags gesetzt.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Ich bezweifle das der vorletzte Befehl so funktioniert, ist aber nur eine Kleinigkeit.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Kalli87
User
Beiträge: 281
Registriert: Montag 10. November 2014, 11:27

Ja stimmt, da is ein kleiner Fehler.
Achte auf die Schreibweise :wink:
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

Und wo ist da der Fehler?
BlackJack

@mettalqueen: Na das der Name `wuerfelMuster` nicht definiert ist. Das sollte die Ausnahme sagen die das auslöst.
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

Es ist doch eine Datei, die ganz oben geöffnet wird

ah ich habe ein n vergessen
BlackJack

@mettalqueen: Nein ist es nicht und ich frage mich gerade wie Du programmierst? Mit Stift und Papier ohne Rechner? Der Fehler fällt *sofort* auf wenn man das auch nur einmal versuchen würde auszuführen. Eben weil das so nicht läuft.
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@mettalqueen: wenn Du meinst. Rate ruhig lustig weiter. Wie wärs wenn Du Dein Programm einfach mal starten würdest?
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

Ich rate nicht, ich hatte wirklich ein n vergessen und sorry da ich nach bestem wissen von mir arbeite, woher soll ich selber wissen was ich falsch mache? Es steht ja nirgends, dass z.B Zeile 23 falsch ist
BlackJack

@mettalqueen: Doch das steht im Traceback wenn Du der Code an die Stelle kommt wo die Ausnahme wegen dem Fehler ausgelöst wird. Und da ist nicht einfach nur ein 'n' was vergessen wurde, sondern die Zeile ist schlicht falsch und wird zu einer Ausnahme führen weil weder `wuerfelMuster` noch `wuerfelnMuster` definiert sind. Und mir ist auch überhaupt nicht klar was Du Dir dabei gedacht hast das dort hinzuschreiben weil das nicht im entferntesten Sinn macht. Selbst wenn das eine Zeichenkette wäre macht die so an der Stelle Null Sinn. Und selbst *das* hättest Du selber merken müssen wenn Du's mal ausgeführt und dann in die Datei geschaut hättest.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Es ging um kein kleines "n"! Du schreibst da oben in ``writeLines`` "Wuerfelmuster.txt" *ohne* Anführungszeichen... Das führt beim Ausführen zwangsweise zu einem ``NameError``.

Und das hätte dir sofort auffallen müssen, wenn Du den *geposteten" Code tatsächlich einmal ausgeführt hättest ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

Code: Alles auswählen

import random
random.seed()
import sys
musterListe = ["Afreeka","Well","Heartwave","Tree","Coll","Biloxy","Jasmin"]
def listeSchreiben():
    d = open("wuerfelnMuster.txt","w")
    print "Gib dein Muster ein"
    musterEingabe = raw_input()
    musterListe.append(musterEingabe)
    d.writelines(wuerfelnMuster.txt)
    d.close()
def wuerfeln():
    d = open("wuerfelnMuster.txt","r")
    wuerfelnMuster = d.readlines()
    random.shuffle(musterListe)
    print musterListe[0:3]
    d.close()
def anfangsMenue():
    eingabemenue = raw_input()
    if eingabemenue == "1":
        listeSchreiben()
    if eingabemenue == "2":
        wuerfeln()
                
print "Möchtest du ein Muster zur Datei hinzufügen 1 oder Würfeln  2"
anfangsMenue()
       
wie muss ich es denn definieren? Ich hatte es so gelesen, dass es reicht es zu öffnen und zu schreiben, existiert es nicht wird es automatisch angelegt
BlackJack

@mettalqueen: Beschreib doch mal was Zeile 10 machen soll und was die einzelnen Bestandteile des Ausdrucks bedeuten.
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

Mit writelines kann ich eine Liste von Strings in die Datei schreiben

Ah ich habs verstanden, da muss nicht die Datei rein sondern die Liste
Antworten