GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Erro ao usar função sum()


#1

Tô tentando somar os valores de uma array utlizando

print(sum(d))

Mas está dando o erro:

TypeError: unsupported operand type(s) for +: 'int' and 'list'


#2

Se você tem uma lista dentro de outra não vai dar certo, todos os elementos da lista precisam ser númericos…

Agora se for uma matriz, com list comprehensions você consegue numa linha…

soma = sum([sum(i) for i in d])

#3

O código funciona, mas não me retorna o resultado que eu preciso.
Esse é o código atual:

def definePartida(p): #Repete a quantidade de sequências.
    j = int(1)
    while j <= p:
        d.append(list(map(int, input("Digite a quantidade de dedos separados por um espaço: ").split())))
        **soma = sum([sum(i) for i in d])**
        print(soma)
        j += 1

Meu problema é que:
Quando o usuário inserir a quantidade de dedos na primeira sequência, eu tenho que somar e dividir para gerar o resultado e partir para a segunda sequência. O código que você me mandou soma a entrada de todas as sequências, não me permitindo gerar o vencedor. Exemplo:

Se dois usuários entrarem, respectivamente, com um e zero dedos, depois dois e quatro dedos e em seguida três e cinco dedos, usando o código que você mandou ficaria:

1 + 0 = 1
1 + 6 = 7
7 + 8 = 15

E o certo seria ficar:

1 + 0 = 1 % 2 = 1
2 + 4 = 6 % 2 = 0
3 + 5 = 8 % 2 = 0

(Eu tenho que somar o valor dos dedos e dividir pelo número de jogadores e, dessa forma, o resto da divisão corresponde ao ID do jogador na array de jogadores).


#4

Você não explicou antes, como eu iria saber? :joy:

Você disse que precisa dividir, mas está usando módulo (resto da divisão) está um pouco confuso isso…

Se precisar ter a média de cada lista, pode tentar assim…

soma = sum([sum(i) / len(i) for i in d])