2017-07-07 41 views
0

我正試圖在hackerrankteam上託管一個簡單的python問題,但我在Python中對列表的計數函數有困難。我已經嘗試了多個測試用例,但是我的計數函數始終返回0.在列表中計算字符串出現

  • 目標:計算連續方塊等於天數的出現次數。

這是列表類型的問題嗎?有沒有更簡單的方法來計算一行中的值,而不必檢查有價值的對,然後計算總和?

import sys 

def solve(size, squares, day, month): 
    check = [sum(squares[nums:nums+month]) == day for nums in range(0,len(squares))] 
    print (check) #Test list output 
    count = check.count('True') 
    return count 

#Test Cases 1 
# size = 6 
# squares = [1,1,1,1,1,1] 
# day, month = (3,2) 
#Output 0 

#Test Cases 2 
# size = 1 
# squares = [4] 
# day, month = (4,1) 
#Output 1 

#Test Cases 3 
size = 5 
squares = [1,2,1,3,2] 
day, month = [3,2] 
#Output 2 

#Custom User Input: 
# size = int(input().strip()) 
# squares = list(map(int, input().strip().split(' '))) 
# day, month = input().strip().split(' ') 
# day, month = [int(day), int(month)] 
result = solve(size, squares, day, month) 
print(result) 
+0

你可以使用TRUE;被視爲1和'FALSE'爲0的事實,所以你可以簡單地做'count = sum(sum(squares [nums:nums + month])== day對於範圍內的數字(0,len(squares))); return count' – AChampion

+0

感謝您的幫助!我對Python編程有點新,所以選擇快捷方式對我的學習會有幫助。 –

回答

2
check.count('True') 

此代碼計數'True'的出現的次數。

應該改爲:

check.count(True) 

您也簡單地使用:

sum(check) 
+0

啊適當的語法再次罷工。列表中的值是否爲bool類型,是列表不能正確計數的原因? –

+0

'True!='True'','=='返回列表中的'bool'值。 – AChampion

相關問題