Home > Mobile >  Repeat a function 3 times
Repeat a function 3 times

Time:12-02

I'm programming the "Rock, paper, scissors". I want now to run the function I added below 3 times. I tried using a for _ in range(s) but printed the same result 3 times.

import random

OPTIONS = ["Rock", "Paper", "Scissors"]

def get_user_input():
    user_choice = input("Select your play (Rock, Paper or Scissors): ")
    return user_choice

def random_choice():
    computer_choice = random.choice(OPTIONS)
    return computer_choice

def game(user_choice, computer_choice):
    if user_choice == computer_choice:
        print(f"You selected: {user_choice}.\nComputer selected: {computer_choice}.\nDraw.")
    else:
        if computer_choice == "Rock" and user_choice == "Paper":
            print(f"You selected: {user_choice}.\nComputer selected: {computer_choice}.\nYou won!")
        if computer_choice == "Rock" and user_choice == "Scissors":
            print(f"You selected: {user_choice}.\nComputer selected: {computer_choice}.\nYou lost...")
        if computer_choice == "Paper" and user_choice == "Scissors":
            print(f"You selected: {user_choice}.\nComputer selected: {computer_choice}.\nYou won!")
        if computer_choice == "Paper" and user_choice == "Rock":
            print(f"You selected: {user_choice}.\nComputer selected: {computer_choice}.\nYou lost...")
        if computer_choice == "Scissors" and user_choice == "Rock":
            print(f"You selected: {user_choice}.\nComputer selected: {computer_choice}.\nYou won!")
        if computer_choice == "Scissors" and user_choice == "Paper":
            print(f"You selected: {user_choice}.\nComputer selected: {computer_choice}.\nYou lost...")

def main():
    user_choice = get_user_input()
    computer_choice = random_choice()
    for _ in range(3):
        if game(user_choice, computer_choice):
            break
        else:
            print("Game has ended!")

main()

Any tips on how to implement three rounds?

CodePudding user response:

I think you have to rework your code in main()

def main():

    for _ in range(3):
        user_choice = get_user_input()
        computer_choice = random_choice()
        game(user_choice, computer_choice)

    print("Game has ended!")

Try something like this

CodePudding user response:

Your program works great! just one small placement error, the random_choice needs to change with every iteration of the loop so I moved the random_choice assignment variable in and that solved the problem. This is also if you want the player to only be able to make one choice.

def main():
    user_choice = get_user_input()
    for _ in range(3):
        computer_choice = random_choice()
        game('Rock', computer_choice)
    print("Game has ended!")

main()

if you want the player to pick every round then it would look like this;

def main():
    for _ in range(3):
        user_choice = get_user_input()
        computer_choice = random_choice()
        game('Rock', computer_choice)
    print("Game has ended!")
            

main()
  • Related