benutzer soll speichern können
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.
@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.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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 )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
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
assert encoding_kapiert
-
- 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
Was erwartest du, was bei der letzten zitierten Codezeile passiert?mettalqueen hat geschrieben:Code: Alles auswählen
def listeSchreiben(): print"Gib dein Muster ein" musterEingabe = raw_input() r.append(e)
-
- 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
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.
Grund: Code in Python Code Tags gesetzt.
-
- User
- Beiträge: 44
- Registriert: Dienstag 7. Mai 2013, 23:02
- Wohnort: Greifswald
Und wo ist da der Fehler?
@mettalqueen: Na das der Name `wuerfelMuster` nicht definiert ist. Das sollte die Ausnahme sagen die das auslöst.
-
- 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
ah ich habe ein n vergessen
@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.
-
- 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
@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.
- 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
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
assert encoding_kapiert
-
- 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()
@mettalqueen: Beschreib doch mal was Zeile 10 machen soll und was die einzelnen Bestandteile des Ausdrucks bedeuten.
-
- 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
Ah ich habs verstanden, da muss nicht die Datei rein sondern die Liste