Попытка печати (сумма (список)), но с ошибкой TypeError: неподдерживаемые типы операндов для +: 'int' и 'str' - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь суммировать список, в котором есть только целые числа, но я получаю сообщение об ошибке TypeError: неподдерживаемые типы операндов для +: 'int' и 'str' в строке 22. Это ' игра ножницы рок-бумага

import random
import time


score = []

while True:
    print('r/p/s')
    x=input('You: ')
    y=random.randint(1,3)
    if str(y) == '1':
        print('CPU: r')
    elif str(y) == '2':
        print('CPU: p')
    elif str(y) == '3':
        print('CPU: s')

    if x == 'r' and str(y) == '3' or x == 'p' and str(y) == '1' or x == 's' and str(y) == '2':
        print('WIN')
        score.append('1')
        print('SCORE:',end='')
        print(sum(score))
    elif x == 'r' and str(y) == '1' or x == 'p' and str(y) == '2' or x == 's' and str(y) == '3':
        print('TIE')
    elif x == 'r' and str(y) == '2' or x == 'p' and str(y) == '3' or x == 's' and str(y) == '1':
        print('LOSS')
    if input('again? (y/n) ') == 'y':
        continue
    else:
        print('     --------      ')
        print('THANKS FOR PLAYING!')
        print('     --------      ')
        time.sleep(2)
        break

Ответы [ 3 ]

2 голосов
/ 07 февраля 2020

Вы не добавляете целые числа к массиву. Вместо этого вы добавляете строки с целочисленными значениями!

Вы должны сделать следующее:

import random
import time

score = []

while True:
    print('r/p/s')
    x = input('You: ')
    y = random.randint(1,3)
    if str(y) == '1':
        print('CPU: r')
    elif str(y) == '2':
        print('CPU: p')
    elif str(y) == '3':
        print('CPU: s')

    if x == 'r' and str(y) == '3' or x == 'p' and str(y) == '1' or x == 's' and str(y) == '2':
        print('WIN')
        score.append(1)
        print('SCORE:',end='')
        print(sum(score))
    elif x == 'r' and str(y) == '1' or x == 'p' and str(y) == '2' or x == 's' and str(y) == '3':
        print('TIE')
    elif x == 'r' and str(y) == '2' or x == 'p' and str(y) == '3' or x == 's' and str(y) == '1':
        print('LOSS')
    if input('again? (y/n) ') == 'y':
        continue
    else:
        print('     --------      ')
        print('THANKS FOR PLAYING!')
        print('     --------      ')
        time.sleep(2)
        break
2 голосов
/ 07 февраля 2020

Вы используете score.append("1"), добавляя строку в список. Затем вы используете sum(score), который не может работать, поскольку теперь он содержит строку. Используйте score.append(1)

1 голос
/ 07 февраля 2020

Вы добавляете строку в список score.append('1') здесь '1' - строка, делающая это вместо score.append(1)

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