Переменная не регистрирует изменение значения - PullRequest
0 голосов
/ 31 декабря 2018

Я хотел сделать простую игру «Скала, бумага, ножницы» на Python.Это хорошо сочетается с игрой, но окончательные результаты всегда отображаются в виде 0.

Я хотел показать меньший фрагмент кода, но я не знаю, в чем проблема, поэтому я нахожусьизвините за длину кода.

Я все еще начинающий ученик, поэтому, пожалуйста, извините, если вопрос слишком глуп или код плохо отформатирован.

#Rock-Paper-Scissor Game
import random


print("Please enter your name:")
userName = input()
print("Welcome " + userName)
print("The following are the rules of the game:")
print("Press 'R' for Rock")
print("Press 'P' for Paper")
print("Press 'S' for Scissor")
print("This will be a 10 point match")

userTally = 0
compTally = 0

def gameProcess(userTally, compTally): #The process of the game. It increments or decrements the value depending on the result
    print("Your turn:")
    userInput = input()
    computerChoice = random.choice(["R","P","S"])

    if userInput == "R": #User Inputs R for Rock

        if computerChoice == "R":
            print("The computer chose Rock")
            print("It's a Tie")
        elif computerChoice == "P":
            print("The computer chose Paper")
            print("Computer Won")
            compTally = compTally + 1
        elif computerChoice == "S":
            print("The computer chose Scissor")
            print("You Won")
            userTally = userTally + 1

    elif userInput == "P": #User Inputs P for Paper

        if computerChoice == "R":
            print("The computer chose Rock")
            print("You Won")
            userTally = userTally + 1
        elif computerChoice == "P":
            print("The computer chose Paper")
            print("It's a Tie")
        elif computerChoice == "S":
            print("The computer chose Scissor")
            print("Computer Won")
            compTally = compTally + 1

    elif userInput == "S": #User Inputs S for Scissor

        if computerChoice == "R":
            print("The computer chose Rock")
            print("Computer Won")
            compTally = compTally + 1
        elif computerChoice == "P":
            print("The computer chose Paper")
            print("You Won")
            userTally = userTally + 1
        elif computerChoice == "S":
            print("The computer chose Scissor")
            print("It's a Tie")
        return(userTally,compTally)

def tryCount(): #The number of tries....
    tryNum = 1
    while tryNum < 11:

        gameProcess(0, 0)
        tryNum = tryNum + 1

tryCount()


print("You scored " + str(userTally))
print("The computer scored " + str(compTally))
if userTally > compTally:
    print("CONGRATULATIONS, YOU WON.")
elif userTally < compTally:
    print("Sorry, better luck next time.")
close = input()
if close == "Random Input.":
    exit()
else:
    exit()

1 Ответ

0 голосов
/ 31 декабря 2018

Вы передаете 0, 0 в gameProcess , который вы рассматриваете как оценки в функции, а затем возвращаете их измененными, но на самом деле вы не используете возвращаемое значение в единственном месте, которое вы вызываете gameProcess tryCount ), поэтому глобальные переменные userTally, compTally остаются неизменными.

Так вы должны изменить tryCount :

def tryCount(): #The number of tries....
    global userTally, compTally
    tryNum = 1
    while tryNum < 11:

        userTally,compTally=gameProcess(userTally,compTally)
        tryNum = tryNum + 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...