2017-10-14 27 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輸出。 –

+0

如果六七個序列嵌套,會怎樣?像'[6,6,3,7,7]'。第一個將刪除第二個六。 –

+0

@someprogrammerdude:我不認爲OP有*祕密測試輸入*。 –

回答

0

在這裏,我發現列表中的誤差= [6,6,1,2,2,6,99,99,7]

我在tests.py寫入相同的代碼和運行一些例子。

我還發現,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個,並且在它們之間包含多個6時,則計數變成2並且第一次變量包含六個變量空列表並試圖在下一個迭代的空列表中找到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. 
相關問題