Python "Schere-Stein-Papier" funktioniert nicht, man kann nicht gewinnen?

3 Antworten

while true == True

Nur "while True" tuts auch. Ist aber nur eine Stilsache

spielerwahl == "schere" or spielerwahl == "Schere"

"spielerwahl == "Schere"" kannst du dir sparen, weil du zuvor alles in Kleinbuchstaben umgewandelt hast.

Abgesehen davon hat das Programm (habe es ein paar mal durchdebuggt) funktioniert bzw. ich habe gewonnen.

Bei Zufallsauswahl kann es manchmal dauern, bis der gewünschte Fall eintritt. Wenn du das vermeiden willst, nutze doch einen Debugger und ändere zB zur Laufzeit den Wert den der Computer "gewürfelt" hat.

alexu694 
Fragesteller
 11.01.2019, 16:58

Danke, es hat funktioniert als ich "spielerwahl == "Schere"" weggelassen habe :o

0

Hi,

ich würde or's immer Klammern meines Wissens nach bindet hier das and stärker und somit würde dort

spielerwahl == "papier" or (spielerwahl == "Papier" and pc == "schere")

stehen.

Zu:

(spielerwahl == "papier" or spielerwahl == "Papier") and pc == "schere"
Ich weiß man könnte das schöner/besser machen, aber mir passt es so:)

Kannst dann hier aufhören zu lesen ;P

Ich würde aber die vielen IF's vermeiden und lieber eine Liste von Tupeln von Regeln aufstellen. z.B alle Tupel kombinationen die Gewinnen oder so. Dann kannst du eine Abfrage machen:

if (spielerwahl, pc) in gewinner_liste: pass

Dadurch ersparst du dir auch die vielen prints. Desweiteren hast du dir gut überlegt die Eingabe direkt in lower case zu lesen. Damit kannst du dir aber auch schon die

spielerwahl == "Papier" # und andere dementsprechenden Abfragen

Abfragen sparen.

Regards,

LifeArtist

alexu694 
Fragesteller
 11.01.2019, 17:13

Danke, ja mir passt es so weil ich es anders nicht kann xD, aber ich verbessere mich gerne!

0

Setze bei deinen Überprüfungen Klammern!

(spielerwahl == "schere" or spielerwahl == "Schere") and pc == "stein":

so, wie du es jetzt hast, wird es so interpretiert:

spielerwahl == "schere" or (spielerwahl == "Schere" and pc == "stein"):

Wenn du also dein Wahl mit großem Anfangsbuchstaben eingibst, solltest du auch jetzt noch gewinnen können.