Anurag Lingwal
Anurag Lingwal

Reputation: 3

Stuck inside the while loop

I was writing code for Rock Paper Scissors game in Python. This is kinda tournament style (3 rounds) But it just keeps playing after the 3rd round is over.

def play():
    player = input("Please type 'r' for Rock, 'p' for Paper and 's' Scissors: \n").lower()
    while (player != 'r') and (player != 'p') and (player != 's'):
        player = input("That is not an valid option. Please try again:\n").lower()
    
    computer = random.choice(['r', 'p', 's'])

    commands = {
        "r" : "Rock",
        "p" : "Paper",
        "s" : "Scissors"
    }

    if player == computer:
        print("It's a draw! Game Over.")
        return("Draw")

    elif user_win(player, computer):
        print(f"You won! The computer used {commands[computer]} against your {commands[player]} and lost.")
        return("Won")

    print(f"You lost! The computer used {commands[computer]} against your {commands[player]} and won.")
    return("Lost")

def user_win(player, computer):
    # r > s, s > p and p > r
    if (player == 'r' and computer == 's') or (player == 's' and computer == 'p') or (player == 'p' and computer == 'r'):
        return True
    
print("Hello, Player! Choose your weapon.")
count, user, comp = 0, 0, 0
while count < 3:
    count =+ 1
    outcome = play()
    if outcome == 'Won':
        user =+ 1
    elif outcome == 'Lost':
        comp =+ 1
if user > comp:
    print(f"You win. You: {user} Computer: {comp}")
elif comp > user:
    print(f"You lost. You: {user} Computer: {comp}")
else:
    print(f"Its a draw. You: {user} Computer: {comp}")

This is the full code. Below is the part which have problem (if i understood it right)

while count < 3:
    count =+ 1
    outcome = play()
    if outcome == 'Won':
        user =+ 1
    elif outcome == 'Lost':
        comp =+ 1

Ps: This is my first time posting on stackoverflow so sorry if i posted in wrong way.

Upvotes: 0

Views: 56

Answers (2)

Ringo S
Ringo S

Reputation: 11

When you do count =+1, it just assigns the value +1 to variable count, which is less than the required exit value of 3. You can try to log the value of count across iterations for a better understanding.

Fix: Change the =+ to += for what I suppose is your requirement, ie to increment value by 1 on each iteration. Read through What is the difference between '+=' and '=+'?

Upvotes: 1

Schnitte
Schnitte

Reputation: 1217

The error is count =+ 1. Try count += 1, that should work.

(As a little background: count =+ 1 will simply assign a value of 1 to the variable count. After that, count never chnages, so it can never reach 3, and you're stuck in an infinite loop. The increment you want is count += 1.)

Upvotes: 2

Related Questions