2017-09-01 3 views
0

Im utilisant python 3 pour créer une liste de rouleaux de dés aléatoires et les additionner, cependant quand je essayer d'ajouter tous les totaux qu'il me donne TypeError: type (s) d'opérande non supporté (s) pour +: 'int' et 'list. Que faire?Essayer de résumer des listes imbriquées mais recevoir une erreur TypeError: type (s) d'opérande non pris en charge pour +: 'int' et 'list'

count = 0 
lista=[[] for q in range(5)] 
while count<len(lista): 
    import random 
    c=random.randrange(1,7,1) 
    lista[count].append(c) 
    count += 1 

print(lista) 
total=sum(lista) 

Répondre

0

Sans vouloir vous offenser, mais oh mon dieu, c'est si peu pythonien que mes yeux saignent. Mais évidemment, vous devez commencer quelque part;) Je suppose que vous avez déjà fait du développement C. En Python, vous n'avez pas besoin de préallouer de la mémoire ou des tableaux. Vous pouvez également itérer directement sur n'importe quel itérable, pas besoin d'utiliser un index entier croissant.

Il suffit de faire:

import random 
lista = [random.randrange(1, 7, 1) for q in range(5)] 
print(lista) 
total = sum(lista) 

Cela va créer lista comme une liste de cinq entiers renvoyés par random.randrange().

Votre problème est: lorsque vous faites lista=[[] for q in range(5)], vous obtenez une liste de 5 listes vides ([[], [], [], [], []]). Puis quand vous lista[count].append(c) vous vous retrouvez avec une liste de liste contenant un entier chacun ([[5], [1], [3], [4], [3]]). sum va alors essayer de faire la somme des listes internes et non des entiers. Cela échoue.

+0

Ceci est une meilleure approche .. –

1

Salut Vous essayez d'ajouter de la valeur int à la liste Donc, erreur d'incompatibilité de type, Vous devez essayer d'ajouter de la valeur int avec la valeur de la liste

count = 0 
total = 0 
lista=[[]for q in range(5)] 
while count<len(lista): 
    import random 
    c=random.randrange(1,7,1) 
    lista[count].append(c) 
    total += lista[count][0] 
    count += 1 
print(lista) 
print total