def spy_games(arr):
net=0
for num in arr:
if num==0:
num +=net
break
if num==0:
num +=net
break
if num==7:
return True
else:
return False
答案 0 :(得分:1)
在您的原始方法中,即使看到num
或0
彼此不靠近,7
也会递增[0,0,7]
,因此当前的方法行不通
一种解决它的方法是在遍历列表时采用长度为3的切片,并查看切片是否与[0,0,7]
相匹配
def spy_games(li):
#Iterate over the list
for idx in range(len(li)):
#If a slice of length 3 matches [0,0,7] return True
if [0,0,7] == li[idx:idx+3]:
return True
#If no such slice found, return False
return False
print(spy_games([1, 0, 3, 0, 6, 7]))
print(spy_games([1, 0, 3, 0, 0, 7]))
print(spy_games([0, 0, 7, 1, 0, 3]))
print(spy_games([1, 0, 0, 7, 2, 3]))
输出将为
False
True
True
True
答案 1 :(得分:0)
您可以将整数列表转换为字符串(例如,列表[1,0,3,0,6,7]
变为'103067'
),然后测试是否包含子字符串'007'
:
list_of_integers1 = [1,0,3,0,6,7]
list_of_integers2 = [0,0,7,0,6,7]
def spy_games(arr):
return '007' in ''.join(str(i) for i in arr)
print(spy_games(list_of_integers1))
print(spy_games(list_of_integers2))
打印:
False
True