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

3 Antworten

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

4

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

0
12
@alexu694

Aus diesem Grund schreibe ich sowas auch trotzdem gerne dazu ;)

1
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.

4

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

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.

Schere, Stein, Papier, nun was bedeutet den zusätzlich Lizard Spock & wie wird das genau gespielt, ich kenne nur das normale Schere, Stein, Papier aus Kindert.?

...zur Frage

Raspberry: Python rechte geben?

Hi Community, und zwar möchte ich meinem Pythonscript(/home/pi/Test.py (dieses Dokument gehört derzeit "pi")) die Schreibberechtigung für ein Dokument(/var/www/html/logfile.txt (dieses Dokumt gehört derzeit www-data)) geben. Ich finde jedoch nichts funktionierendes im Internet. Gruß Physikgr

...zur Frage

Hilfe bei Python. Irgendwer?

Die Funktionen: Sissors, Paper und Stone sollen zur Variable Spieler addieren, tun sie aber nicht :(

Weiß jemand wo der Fehler liegt?

    import tkinter
from random import randint
top=tkinter.Tk()


z=1


pcwahl=randint(1,3)


  

x=1

def sissors(event):
    global spieler
    if pcwahl==1:
        pwahl["text"]= "Die Wahl des PCs ist: Schere"
    elif pcwahl==2:
        pwahl["text"]="Die Wahl des PCs ist: Papier"
    elif pcwahl==3:
        pwahl["text"]="Die Wahl des PCs ist: Stein"
    spieler=spieler+1
        

def paper(event):
    global spieler
    if pcwahl==1:
        pwahl["text"]= "Die Wahl des PCs ist: Schere"
    elif pcwahl==2:
        pwahl["text"]="Die Wahl des PCs ist: Papier"
    elif pcwahl==3:
        pwahl["text"]="Die Wahl des PCs ist: Stein"
    spieler=spieler+2
         
def stone(event):
    global spieler
    if pcwahl==1:
        pwahl["text"]= "Die Wahl des PCs ist: Schere"
    elif pcwahl==2:
        pwahl["text"]="Die Wahl des PCs ist: Papier"
    elif pcwahl==3:
        pwahl["text"]="Die Wahl des PCs ist: Stein"
    spieler=spieler+3
        
üsch=tkinter.Label(top,font="Arial", text="Herzlich Willkommen!")
üsch.pack()
üsch2=tkinter.Label(top,font="Arial", text="Wählen Sie bitte Schere, Stein oder Papier.")
üsch2.pack()


schere=tkinter.Button(top,font="Arial",height=5,width=10, text="Schere")
schere.pack()
schere.bind("<Button-1>", sissors)

papier=tkinter.Button(top,font="Arial",height=5,width=10, text="Papier")
papier.pack()
papier.bind("<Button-1>", paper)

stein=tkinter.Button(top,font="Arial",height=5,width=10, text="Stein")
stein.pack()
stein.bind("<Button-1>", stone)

abstand=tkinter.Label(top,text=" ") 
abstand.pack()

pwahl=tkinter.Label(top,font="Arial", text=" ")
pwahl.pack()


wahl=tkinter.Label(top, text=" ")
wahl.pack()

spieler= 1



if spieler==1 and pcwahl==1:
    wahl["text"]= "Unentschieden!"
    
if spieler==1 and pcwahl==2:
    wahl["text"]="Sieg!"
elif spieler==2 and pcwahl==3:
    wahl["text"]="Sieg!"
elif spieler==3 and pcwahl==1:
    wahl["text"]="Sieg!"

if spieler==1 and pcwahl==3:
    wahl["text"]="Verloren :("
elif spieler==2 and pcwahl==1:
    wahl["text"]="Verloren :("
elif spieler==3 and pcwahl==2:
    wahl["text"]="Verloren :("

if pcwahl==1:
     print(spieler)




top.mainloop()  
...zur Frage

Schere,Stein,Papier mit mehreren?

Wie sind die Spielregeln, wenn mehrere Menschen gleichzeitig Schere,Stein,Papier spielen? Also dann gibt es ja mehrere mit z.B. Papier und Stein. Wie geht das?

...zur Frage

Python input() Funktion funktioniert nicht?

Hallo allerseits. Ich habe mich mal ein Wenig mit Python beschäftigt und versucht "Schere Stein Papier" zu Programmieren. Im folgenden Script verliert man zwar immer (Wenn es funktionieren würde...) aber noch ist das beabsichtigt.

while "true":
    print("Rock (r), Paper (p) or Scissors (s)? (x to exit)")
    ropasc = input(":")
    if ropasc=="r":
        print("I chose Paper!")
        print("I won!")
        print()
        print()
    elif ropasc=="p":
        print("I chose Scissors")
        print("I won!")
        print()
        print()
    elif ropasc=="s":
        print("I chose Rock!")
        print("I won!")
        print()
        print()
    elif ropasc=="x":
        break
    else:
        print("I didn't understand this.")
print("Bye!")

Wenn ich es jedoch ausführe kommt zuerst der output aber sobald ich etwas eingebe und enter drücke komm folgende Fehlermeldung (ich habe r eingegeben):

Traceback (most recent call last):
  File "rps.py", line 3, in <module>
    ropasc = input(":")
  File "<string>", line 1, in <module>
NameError: name 'r' is not defined
...zur Frage

Zu dritt Schere, Stein, Papier - wie umsetzen?

Wie würdet ihr zu dritt das Spiel Schere, Stein, Papier umsetzen.

...zur Frage

Was möchtest Du wissen?