Entschuldigung, wenn ich nerve, aber ich habe gedacht, dass es funktioniert, wenn ich die Elemente in ein Verhältnis zu einander setze (z.27-33) und dann die Elemente in einen string zu konvertiere(z. 21 - 25), um die werte dann in der abfrage abzufragen(z. 49- ende). wenn aber nur nach dem Alphabet verglichen wird wie kann ich die Elemente (schere, stein, papier)dann definieren bzw in ein Verhältnis zueinander setzen?BlackJack hat geschrieben:@jan.b: Das ``In [1]:`` ist der Eingabeprompt, nicht Teil der Eingabe.
kann mir bitte jemand bei meinem spiel helfen?
Sirius3 hat geschrieben:@jan.b: das festlegen von Bedingungen funktioniert so nicht. Beim Programmieren muß man die Semantik der Sprache lernen und kann nicht hoffen, dass erfundene Semantik irgendwie richtig von der Programmiersprache erraten wird.
Dass ›i‹ für input steht, hast Du spätestens in einer Woche vergessen. Kurz ist eigentlich kein Kriterium für einen guten Variablennamen.
Um auf Deine Frage zurückzukommen: am Einfachsten programmierst Du die Bedingungen explizit aus, also wenn Spieler "papier" gewählt hat und der Computer "stein" dann hat Spieler gewonnen. Das sind maximal 9 Bedingungen, die Du gut in einer Funktion kapseln kannst. Später kannst Du Dir ja noch überlegen, wie Du die Bedingungen vereinfachen kannst.
Code: Alles auswählen
runde = 1
print("das ist runde %s" % (runde))
spieleroptionen = ["schere", "stein", "papier"]
spieler = input("Deine Eingbe: ")
ki = (random.choice(spieleroptionen))
print("die Eingabe von der ki: %s" % (ki))
if spieler == ki:
print("unentschieden")
elif spieler == "papier":
if ki == "schere":
print("punkt für tom")
elif spieler == "schere":
if ki == "stein":
print("punkt für tom")
elif spieler == "stein":
if ki == "schere":
print("punkt für dich")
elif spieler == "stein":
if ki == "papier":
print("punkt für tom")
elif spieler == "schere":
if ki == "papier":
print("punkt für dich")
elif spieler == "papier":
if ki == "schere":
print("punkt für tom")
else:
spieler not in spieleroptionen
print("falsche eingabe")
if ki not in spieleroptionen:
print("falsche eingabe")
print("______________________________________________________________________")
time.sleep(0.5)
runde = runde + 1
Zuletzt geändert von Anonymous am Donnerstag 10. August 2017, 05:31, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
@jan.b: Die ``elif``-Zweige schliessen sich aus. Wenn einer davon genommen wird, dann wird kein anderer mehr geprüft. Das heisst wenn der Spieler 'stein' eingegeben hat, dann wird der ``elif``-Zweig in Zeile 15 betreten, und danach kein anderer mehr.
Das Problem hätte man nicht wenn im ``elif`` nicht nur eine Teilbedingung, sondern die gesamte Bedingung stehen würde. Teilbedingungen kann man mit den Operatoren ``and`` und ``or`` verknüpfen.
Die Importe von `time` und `random` haben noch gefehlt.
Eingerückt wird per Konvention vier Leerzeichen pro Ebene. Siehe auch den Style Guide for Python Code.
Zeile 28 hat keinen Effekt. Der Ausdruck wird zu einem Wahrheitswert ausgewertet, mit dem dann aber nichts gemacht wird. Sollte aber vielleicht, denn im Gegensatz zu der nachfolgenden Prüfung kann der Benutzer ja tatsächlich etwas total anderes eingeben.
Das sollte man vielleicht unterbinden in dem man eine Funktion schreibt, die den Benutzer solange nach einer Eingabe fragt, bis der eine gültige Eingabe gemacht hat. Das muss nicht einmal Absicht vom Benutzer sein — man vertippt sich ja auch mal.
In neuem Code würde ich die `format()`-Methode auf Zeichenketten dem ``%``-Operator vorziehen.
Das Problem hätte man nicht wenn im ``elif`` nicht nur eine Teilbedingung, sondern die gesamte Bedingung stehen würde. Teilbedingungen kann man mit den Operatoren ``and`` und ``or`` verknüpfen.
Die Importe von `time` und `random` haben noch gefehlt.
Eingerückt wird per Konvention vier Leerzeichen pro Ebene. Siehe auch den Style Guide for Python Code.
Zeile 28 hat keinen Effekt. Der Ausdruck wird zu einem Wahrheitswert ausgewertet, mit dem dann aber nichts gemacht wird. Sollte aber vielleicht, denn im Gegensatz zu der nachfolgenden Prüfung kann der Benutzer ja tatsächlich etwas total anderes eingeben.
Das sollte man vielleicht unterbinden in dem man eine Funktion schreibt, die den Benutzer solange nach einer Eingabe fragt, bis der eine gültige Eingabe gemacht hat. Das muss nicht einmal Absicht vom Benutzer sein — man vertippt sich ja auch mal.
In neuem Code würde ich die `format()`-Methode auf Zeichenketten dem ``%``-Operator vorziehen.
danke ich probiers.BlackJack hat geschrieben:@jan.b: Die ``elif``-Zweige schliessen sich aus. Wenn einer davon genommen wird, dann wird kein anderer mehr geprüft. Das heisst wenn der Spieler 'stein' eingegeben hat, dann wird der ``elif``-Zweig in Zeile 15 betreten, und danach kein anderer mehr.
Das Problem hätte man nicht wenn im ``elif`` nicht nur eine Teilbedingung, sondern die gesamte Bedingung stehen würde. Teilbedingungen kann man mit den Operatoren ``and`` und ``or`` verknüpfen.
Die Importe von `time` und `random` haben noch gefehlt.
Eingerückt wird per Konvention vier Leerzeichen pro Ebene. Siehe auch den Style Guide for Python Code.
Zeile 28 hat keinen Effekt. Der Ausdruck wird zu einem Wahrheitswert ausgewertet, mit dem dann aber nichts gemacht wird. Sollte aber vielleicht, denn im Gegensatz zu der nachfolgenden Prüfung kann der Benutzer ja tatsächlich etwas total anderes eingeben.
Das sollte man vielleicht unterbinden in dem man eine Funktion schreibt, die den Benutzer solange nach einer Eingabe fragt, bis der eine gültige Eingabe gemacht hat. Das muss nicht einmal Absicht vom Benutzer sein — man vertippt sich ja auch mal.
In neuem Code würde ich die `format()`-Methode auf Zeichenketten dem ``%``-Operator vorziehen.