Hi,
ich stehe wahrscheinlich total auf dem schlauch, aber hier mein Problem:
Ich wollte zum langsamen einstieg in python ein tic-tac-toe spiel programmieren. allerdings scheitere ich daran ein durch input bestimmtes feld zu verändern:
print ("tic tac toe")
#feld erstellen
feld = [[0,0,0],[0,0,0],[0,0,0]]
# druckbefehl des feldes
for i in range (3):
print (feld)
print ("spieler 1:")
x= input (["vertikale:"])
y= input (["horizontale:"])
feld [x][y] = "1" #HIER IST DER FEHLER, das klappt nicht
# druckbefehl des feldes
for i in range (3):
print (feld)
unterliste
Drei Bitten zu Anfang:
- Bitte gib deine Python-Version an. Zwischen Python 2 und Python 3 gibt es Syntaxunterschiede.
- Verwende bitte Python-Tags beim Einstellen von Sourcecode.
- Gib die echte Fehlermeldung des Systems an."klappt nicht" ist nicht gerade aussagekräftig.
Hinweis zum Fehler: Was ist denn der Typ von x? Mit print(type(x)) kannst du es herausbekommen.
- Bitte gib deine Python-Version an. Zwischen Python 2 und Python 3 gibt es Syntaxunterschiede.
- Verwende bitte Python-Tags beim Einstellen von Sourcecode.
- Gib die echte Fehlermeldung des Systems an."klappt nicht" ist nicht gerade aussagekräftig.
Hinweis zum Fehler: Was ist denn der Typ von x? Mit print(type(x)) kannst du es herausbekommen.
Hallo und willkkommen im Forum!
Ich nehme mal an, dass du Python in Version 3 benutzt. Du bekommst mit `input` einen String, der Index muss allerdings als Integer verwendet werden. Versuche bei den Inputs einfach mal:
Und bitte packe den Code in deinem Beitrag noch in Python-Code-Tags, damit man das Programm vernünftig lesen kann. Außerdem ist es für deine nächsten Posts ganz hilfreich, wenn du angibst, was genau nicht funktioniert. Also: was erwartest du und was passiert tatsächlich. Außerdem solltest du Fehlermeldung posten (inklusive des gesamten Tracebacks). Das alles macht eine Fehlersuche sehr viel einfacher.
Sebastian
Ich nehme mal an, dass du Python in Version 3 benutzt. Du bekommst mit `input` einen String, der Index muss allerdings als Integer verwendet werden. Versuche bei den Inputs einfach mal:
Code: Alles auswählen
x = int(input("..."))
Sebastian
Das Leben ist wie ein Tennisball.
Statt
würde man in Python übrigens eher
benutzen, wobei ich natürlich "feld" in "felder" unbenannt habe, weil diese Variable ja für eine Liste von Feldern steht und daher den Plural verdient. Auf Englisch ist das in der Regel einfacher, da es hier weniger Ausnahmen gibt und man sich die Konvention merken kann, Listen an der Pluralform mit "s" zu erkennen (field / fields).
Ach ja, und auch kein Leerzeichen zwischen "print" und der Klammer auf.
Stefan
Code: Alles auswählen
for i in range (3):
print (feld[i])
Code: Alles auswählen
for feld in felder:
print(feld)
Ach ja, und auch kein Leerzeichen zwischen "print" und der Klammer auf.
Stefan
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Irgend wie habe ich das Gefühl, dass diese Schreibweise in letzter Zeit speziell bei Anfängern immer öfter auftaucht. Kann sich das jemand erklären? Gibt es da eine neue "hippe" Quelle, aus der die das übernehmen? ("OpenBook" reloaded oder so )sma hat geschrieben: Ach ja, und auch kein Leerzeichen zwischen "print" und der Klammer auf.
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
Theorie 1: Irgendein obskurer (irrgeleiteter) Formatierstil aus einer anderen Sprache. Es soll Leute geben, die "func (a)" oder gar "func( a )" besser als "func(a)" finden.
Theorie 2: Inspiriert durch die Klammern um if und while bei C oder Java, wo man, da erste Schlüsselwörter sind, ja ein Leerzeichen zwischen Schlüsselwort und Klammer macht, nicht aber bei Funktionsaufrufen, es sei denn man ist nach Theorie 1 fehlgeleitet.
Theorie 3: Im Tutorial stand "print 1" und mit trial und error hat man herausgefunden, dass es mit Klammern geht, aber hat (noch) nicht den Unterschied zwischen Tupel und Funktionsaufruf verstanden.
Theorie 4: Wie 3, zusätzlich mit 2, weil die meisten Syntaxhighlighter für Python auch bei Python 3 immer noch das "print" als Schlüsselwort hervorheben, auch wenn es diesen Status verloren hat.
Stefan
Theorie 2: Inspiriert durch die Klammern um if und while bei C oder Java, wo man, da erste Schlüsselwörter sind, ja ein Leerzeichen zwischen Schlüsselwort und Klammer macht, nicht aber bei Funktionsaufrufen, es sei denn man ist nach Theorie 1 fehlgeleitet.
Theorie 3: Im Tutorial stand "print 1" und mit trial und error hat man herausgefunden, dass es mit Klammern geht, aber hat (noch) nicht den Unterschied zwischen Tupel und Funktionsaufruf verstanden.
Theorie 4: Wie 3, zusätzlich mit 2, weil die meisten Syntaxhighlighter für Python auch bei Python 3 immer noch das "print" als Schlüsselwort hervorheben, auch wenn es diesen Status verloren hat.
Stefan