Python Код «Камень, ножницы, бумага» дал неверный результат - PullRequest
0 голосов
/ 13 июля 2020

Суть этого кода в том, чтобы изобразить игру «Камень, ножницы, бумага», используя язык Python, в основном с помощью операторов for l oop и if ... else. Я использовал PyScripter для запуска кода на Python 3.7.2 в качестве движка. def main() и if __name__ == '__main__' - это коды PyScripter для запуска машины

import random

def main():
    pass

if __name__ == '__main__':
    main()


tie_sum, comp_sum, human_sum = 0, 0, 0
name = input('Enter your firstname here: ')

for i in range(5):
    tie_sum += tie_sum
    comp_sum += comp_sum
    human_sum += human_sum

    comp_guess = random.randint(1, 3)
    print(f'The computer guess option is {comp_guess}')
    human_guess = int(input('Enter 1 as (rock), 2 as (paper) or 3 as (scissors):'))

    if comp_guess == 1 and human_guess == 3:
        comp_sum += 1
    elif comp_guess == 1 and human_guess is 2:
        human_sum += 1
    elif comp_guess == 2 and human_guess == 3:
        human_sum += 1
    elif comp_guess == 3 and human_guess == 1:
        human_sum += 1
    elif comp_guess == 3 and human_guess == 2:
        comp_sum += 1
    elif comp_guess == 2 and human_guess == 1:
        comp_sum += 1
    else:
        tie_sum += 1

print(f'The number of tie in this game is {tie_sum}')

if comp_sum > human_sum:
    print('The winner of this game is the Computer.')
    print(f'The comp_sum is {comp_sum}')
elif comp_sum < human_sum:
    print(f'The winner of this game is {name}.')
    print(f'The human sum is {human_sum}')
else:
    print('This game ends in tie.')
    print(f'The tie sum is {tie_sum}')

1 Ответ

0 голосов
/ 13 июля 2020

Причина тому - первые три строки в строке l oop. Вы увеличиваете сумму компьютера, человека и t ie при проверке условия, и когда вы снова повторяете l oop, оно снова суммируется. Вот модифицированный код:

import random

def main():
    pass

if __name__ == '__main__':
    main()


tie_sum, comp_sum, human_sum = 0, 0, 0
name = input('Enter your firstname here: ')

for i in range(5):
    

    comp_guess = random.randint(1, 3)
    
    human_guess = int(input('Enter 1 as (rock), 2 as (paper) or 3 as (scissors):'))
    print(f'The computer guess option is {comp_guess}')
    if comp_guess == 1 and human_guess == 3:
        comp_sum += 1
    elif comp_guess == 1 and human_guess == 2:
        human_sum += 1
    elif comp_guess == 2 and human_guess == 3:
        human_sum += 1
    elif comp_guess == 3 and human_guess == 1:
        human_sum += 1
    elif comp_guess == 3 and human_guess == 2:
        comp_sum += 1
    elif comp_guess == 2 and human_guess == 1:
        comp_sum += 1
    else:
        tie_sum += 1

print(f'The number of tie in this game is {tie_sum}')

if comp_sum > human_sum:
    print('The winner of this game is the Computer.')
    print(f'The comp_sum is {comp_sum}')
elif comp_sum < human_sum:
    print(f'The winner of this game is {name}.')
    print(f'The human sum is {human_sum}')
else:
    print('This game ends in tie.')
    print(f'The tie sum is {tie_sum}')

Кроме того, была еще одна модификация, компьютерное предположение должно быть напечатано после предположения человека. Я тоже это исправил. Надеюсь, это поможет.

...