Wieso wird die eine if-Anweisung nicht ausggeführt?

Code-Stücke können hier veröffentlicht werden.
Antworten
Dav1dos112
User
Beiträge: 1
Registriert: Donnerstag 21. April 2022, 08:59

Hallo,
Ich muss für die Uni das Schere Stein Papier Spiel programmieren, jedoch werden bei meinem Code nach dem print Befehl: print(f"The computer has choosen {choice_computer} . ") nicht ausgeführt. Wieso ist das so??

Der Code:


def random_choice():
number = random.randint(1, 3)
choice = None
if number == 1:
choice = "SISSORS"
elif number == 2:
choice = "ROCK"
elif number == 3:
choice = "PAPER"
return choice

while True:
choice_computer = str(random_choice())
points_c = 0
points_p = 0
choice_player = str(input("Welcome to Rock Paper Sissors. Choose Rock, Paper or Sissors!"))
if choice_player.upper() == ("ROCK" or "SISSORS" or "PAPER"):
print(f"The computer has choosen {choice_computer} . ")
if (choice_player == choice_computer):
print("Es ist unentschieden")
elif(choice_player.upper == "ROCK" and choice_computer == "SISSORS") or (choice_player.upper == "SISSORS" and choice_computer == "PAPER") or (choice_player.upper == "PAPER" and choice_computer=="ROCK"):
points_p += 1
print("Der Spieler gewinnt")
elif (choice_computer == "ROCK" and choice_player.upper == "SISSORS") or (choice_computer == "SISSORS" and choice_player.upper == "PAPER") or (choice_computer == "PAPER" and choice_player.upper== "ROCK"):
points_c += 1
print("Der Computer gewinnt")
else:
print("There has been a mistake!")
print("Next round!!")
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Da du den Code nicht im vollständigen Editor per Code Tags </> lesbar eingefügt hast, sind alle Einrückungen verschwunden.

Diese Zeile ist Murks:

Code: Alles auswählen

if choice_player.upper() == ("ROCK" or "SISSORS" or "PAPER"):
Du willst abfragen ob die Eingabe in den folgenden Möglichkeiten enthalten ist und das macht man so:

Code: Alles auswählen

if choice_player.upper() in ["ROCK", "SISSORS", "PAPER"]:
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Benutze keine kryptischen Abkürzungen, was soll das p oder c bei `points` denn bedeuten?
Du hast eine Funktion `random_choice` geschrieben, die es so schon im random-Modul gibt, Du hast Dir da unnötig Arbeit gemacht. Das was `random_choice` oder `input` zurückliefert ist bereits in String, das nochmal mit str umzuwandeln ist Unsinn.
Hast Du Dir mal angeschaut, was der Ausdruck `"ROCK" or "SISSORS" or "PAPER"` als Ergebnis liefert?

Code: Alles auswählen

CHOICES = ["SISSORS", "ROCK", "PAPER"]

while True:
    choice_computer = random.choice(CHOICES)
    points_computer = 0
    points_player = 0
    choice_player = input("Welcome to Rock Paper Sissors. Choose Rock, Paper or Sissors!"))
    if choice_player.upper() in CHOICES:
        ...
Im restlichen Code hat es auch noch einige Fehler, die Du selbst noch suchen darfst, am besten, in dem Du Dir jeden Teilausdruck in den if-Bedingungen mal ausgeben läßt.
Antworten