2017-10-14 3 views
-2

J'essaie cette petite liste de problèmes sur codingbat. C'est le lien vers le problème: http://codingbat.com/prob/p108886 Je dois calculer la somme de la liste sauf ignorer une sous-liste qui commence par 6 et se termine par 7. Je partage le code que j'ai écrit, quelqu'un peut-il m'aider dans où je fais une erreur.Je reçois une erreur de compilation: 6 pas dans la liste

def sum67(nums): 
    def c6(six): 
    if len(six) > 0: 
     if 6 not in six: 
     return six 
     else: 
     count= 0 
     for a in six: 
      if a== 6: 
      count = count + 1 

     for b in range(count): 
      in1= six.index(6) 
      in2= six.index(7) 

      six= six[0:in1]+six[in2+1:] 
     return six 
    else: 
     return 0 

    a= c6(nums) 
    return sum(nums) 
+0

S'il vous plaît modifier votre question d'inclure le * complet * et * complete * sortie de Python. –

+0

Que faire si six-sept séquences sont imbriquées. Comme '[6,6,3,7,7]'. Le premier enlèvera le second six. –

+0

@someprogrammerdude: Je ne pense pas que l'OP ait la * entrée de test secrète *. –

Répondre

0

Ici, je trouve l'erreur de la liste = [6,6,1, 2, 2, 6, 99, 99, 7]

J'ai écrit le même code dans tests.py et courir avec quelques exemples.

J'ai aussi constaté que sum(nums) a besoin d'être modifiés pour sum(a)

def sum67(nums): 
    def c6(six): 
     if len(six) > 0: 
      if 6 not in six: 
       return six 
      else: 
       count = 0 
       for a in six: 
        if a == 6: 
         count = count + 1 

       for b in range(count): 
        in1 = six.index(6) 
        in2 = six.index(7) 

        six = six[0:in1] + six[in2 + 1:] 
       return six 
     else: 
      return 0 

    a = c6(nums) 
    return sum(a) 


numbers = [6,6,1, 2, 2, 6, 99, 99, 7] 
sum1 = sum67(numbers) 




Traceback (most recent call last): 
    File "tests.py", line 26, in <module> 
    sum1 = sum67(numbers) 
    File "tests.py", line 21, in sum67 
    a = c6(nums) 
    File "tests.py", line 13, in c6 
    in1 = six.index(6) 
ValueError: 6 is not in list 

Permettez-moi de savoir si je me trompe.

J'ai essayé le code ci-dessous dans ma console. Cela fonctionne pour moi toutes mes entrées.

def sum67(nums): 
    def c6(six): 
     if len(six) > 0: 
      if 6 not in six: 
       return six 
      else: 
       count = 0 
       for a in six: 
        if a == 6: 
         count = count + 1 
       for b in range(count): 
        if six and six.__contains__(6) and six.__contains__(7): 
         in1 = six.index(6) 
         in2 = six.index(7) 
         six = six[0:in1] + six[in2 + 1:] 
       return six 
     else: 
      return 0 
    a = c6(nums) 
    return sum(a) 


numbers = [6, 6, 1, 2, 2, 6, 99, 99, 7, 1, 2, 6, 1, 2, 7, 1, 2,6,7] 
sum1 = sum67(numbers) 
print("Sum value = %s" % sum1) 
Sum value = 6 

Mais je reçois ci-dessous erreur dans l'URL (http://codingbat.com/prob/p108886) prévu dans la principale Desription

Line 12: __contains__ is an invalid attribute name because it starts with "_". 

Je ne sais pas la raison de cette erreur.

+0

la raison de l'erreur * (6 n'est pas dans la liste) * est que quand une liste a 6 à la première position et 7 à la dernière position et en contient 6 de plus, alors le compte devient 2 et la première liste vide et en essayant de trouver le 6 dans la liste vide pour l'iteratio suivante –

0

Le message d'erreur que vous voyez n'est pas, en fait, une erreur de compilation. Il est la valeur de l'exception soulevée par index lorsque l'argument ne se trouve pas:

>>> [1,2,3].index(6) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: 6 is not in list 

Vous devez attraper l'erreur et répondre de façon appropriée:

try: 
    in1 = six.index(6) 
except ValueError: 
    # What should you do if there is no 6 in the list? 
    # Do it here.