Почему счет не отображается правильно? - PullRequest
0 голосов
/ 08 марта 2020

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

import random
games = int(input("")) #how many games
usersc = 0
compsc = 0
for x in range(games):
    score = (str(usersc) + "-" + str(compsc))
    user = input("") #ROCK, PAPER, SCISSORS
    comp = random.randint(0,2)
    if user == 'ROCK':
        if comp == 0:
            print("tie " + score)
        elif comp == 1:
            compsc += 1
            print("loss " + score)
        else:
            usersc += 1
            print("win " + score)
    elif user == 'PAPER':
        if comp == 0:
            usersc += 1
            print("win " + score)
        elif comp == 1:
            print("tie " + score)
        else:
            compsc += 1
            print("loss " + score)
    elif user == 'SCISSORS':
        if comp == 0:
            compsc += 1
            print("loss " + score)
        elif comp == 1:
            usersc += 1
            print("win " + score)
        else:
            print("tie " + score)
    else:
        print("try again")

if compsc > usersc:
    print("loss")
elif usersc > compsc:
    print("win")
else:
    print("tie")

Например, когда компьютер побеждает, он говорит проигрыш 0-0, когда должен скажем проигрыш 0-1, но затем в следующем раунде он скажет 0-1. Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 08 марта 2020

Проблема в том, что вы сохраняете счет в переменной, а затем увеличиваете его, поэтому вы всегда будете на 1 игру позади. Самый простой способ убедиться, что оценка всегда правильная, - это создать функцию для получения оценки, подобной этой ...

def get_score():
    return str(usersc) + "-" + str(compsc)

Это гарантирует, что всегда будут использоваться самые последние значения оценки пользователя и оценки. С помощью этого код становится ...

import random

games = int(input("")) #how many games
usersc = 0
compsc = 0

def get_score():
    return str(usersc) + "-" + str(compsc)

for x in range(games):
    user = input("") #ROCK, PAPER, SCISSORS
    comp = random.randint(0,2)
    if user == 'ROCK':
        if comp == 0:
            print("tie " + get_score())
        elif comp == 1:
            compsc += 1
            print("loss " + get_score())
        else:
            usersc += 1
            print("win " + get_score())
    elif user == 'PAPER':
        if comp == 0:
            usersc += 1
            print("win " + get_score())
        elif comp == 1:
            print("tie " + get_score())
        else:
            compsc += 1
            print("loss " + get_score())
    elif user == 'SCISSORS':
        if comp == 0:
            compsc += 1
            print("loss " + get_score())
        elif comp == 1:
            usersc += 1
            print("win " + get_score())
        else:
            print("tie " + get_score())
    else:
        print("try again")

if compsc > usersc:
    print("loss")
elif usersc > compsc:
    print("win")
else:
    print("tie")
1 голос
/ 08 марта 2020

когда вы печатаете проигрыш + счет или выигрыш + счет, сначала обновите счет как счет = (str (пользователи c) + "-" + str (comps c)), а затем напечатайте его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...