2017-07-07 40 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

相关问题