对于" sum67"在codebat中进行python练习,我的所有结果都返回了" Timed out"结果。尽管如此,当我在IDLE中运行代码时,它似乎完美无缺。
在练习中,我必须返回列表中所有nums
的总和。但是,包括在内的6到7之间的nums
不得计算在内。
有人可以帮我找到原因吗?我快死了
def sum67(nums):
count = 0
while 6 in nums:
place_6 = nums.index(6)
place_7 = nums.index(7)+1
del nums[place_6:place_7]
for i in nums:
count += i
return count
非常感谢:D
答案 0 :(得分:0)
您的代码失败的原因是因为您认为每个7
的后面都会有ValueError
,而且可能不是这种情况。
当发生这种情况时,您的代码可能是:
7
存在时,[1, 6, 2]
(尝试使用7
)或6
确实存在,则list
之前的(切片无法从[1, 7, 6, 2]
删除任何内容,但您会一遍又一遍地尝试无论如何..)(试试def sum67(nums):
stop = False
count = 0
for number in nums:
if number == 6:
stop = True
elif stop and number == 7:
stop = False
else:
if not stop:
count += number
return count
)相反如何:
6
除非您遇到7
,否则只需继续添加条款即可。如果您这样做,则会停止添加,直到找到Project settings -> Screens
。
请注意,这绝对可以改善。它是快速而肮脏的类型的解决方案passes the tests。
答案 1 :(得分:0)
您将获得timeout error
因为while <int> in <array>
将继续返回true,直到您在while循环条件中编辑正在测试的内容。
答案 2 :(得分:0)
你的解决方案工作正常,所以我认为CodingBat有一个非常无情的超时阈值!是他们,不是你。
答案 3 :(得分:0)
def sum67(nums):
sum = 0
test=True
for i in nums:
if i == 6:
test=False
continue
if test == False and i == 7:
test=True
continue
if test==True:
sum+=i
return sum