2017-10-14 13 views
-2

私はこの小さな問題リストをcodingbatで試しています。これは問題へのリンクです:http://codingbat.com/prob/p108886 6で始まり7で終わるサブリストを無視する以外は、リストの合計を計算する必要があります。私が書いたコードを共有しています。私が作っている場所で助けてくれますか?間違い。ここコンパイルエラーが発生しました:リストに6がありません

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

をフル*を含めるようにあなたの質問を編集してくださいPythonから*および* complete *出力。 –

+0

6,7シーケンスがネストされている場合はどうなりますか? '[6,6,3,7,7]のように。最初の人は2番目の6人を削除します。 –

+0

@someprogrammerdude:OPに*秘密のテスト入力があるとは思わない。 –

答えて

0

私はtests.pyで同じコードを書かれている[6,6,1、2、2、6、99、99、7]

=リストのエラーを発見しいくつかの例で実行します。

は、私はまた、sum(nums)ニーズは私が間違っている場合は、私に教えてください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 

に変更することがわかりました。

私のコンソールで以下のコードを試しました。それは私のすべての入力のために働いています。

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 

しかし、私はだから私は、このエラーの理由を知っていない主なdesription

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

に提供されたURL(http://codingbat.com/prob/p108886)でエラーの下に取得しています。

+0

エラー*(6がリストにない)*の理由は、最初の位置に6、最後に7のリストがあり、その間にもう1つ6がある場合、countは2になり、最初に6つの変数が含まれます空のリストを探し、次のiteratioの空のリストで6を見つけようとする –

0

表示されるエラーメッセージは、実際にはコンパイラエラーではありません。これは、引数が見つからない場合indexによって発生した例外の値である:

あなたがエラーをキャッチし、適切に対応する必要が
>>> [1,2,3].index(6) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: 6 is not in list 

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