解决codingbat python列表切片问题
卡在以下位置: 返回数组中数字的总和,空数组返回0。除此之外,数字13是非常不吉利的,所以它不算数,紧跟在13之后的数字也不算数 到目前为止,我写了:解决codingbat python列表切片问题,python,Python,卡在以下位置: 返回数组中数字的总和,空数组返回0。除此之外,数字13是非常不吉利的,所以它不算数,紧跟在13之后的数字也不算数 到目前为止,我写了: def sum13(nums): if 13 not in nums: return sum(nums) for i in range(len(nums)): if nums[i] == 13: return sum(nums[:i]) 当问题中第二次出现13时出现问题
def sum13(nums):
if 13 not in nums:
return sum(nums)
for i in range(len(nums)):
if nums[i] == 13:
return sum(nums[:i])
当问题中第二次出现13时出现问题,并且没有立即计算之后的数字。感谢您的帮助。一种与您开始时相同的方式是:
def sum13(nums):
if 13 not in nums:
return sum(nums)
ret = 0
count_next = True
for num in nums:
if num == 13:
count_next = False
elif count_next:
ret += num
else:
count_next = True
return ret
如果数字是13,记得不要数下一个数字。如果next为真(13不是最后一个数字),数一数。如果next不为true,数字也不为13,请记住计算下一个数字。以与开始时相同的方式进行计算的方法如下:
def sum13(nums):
if 13 not in nums:
return sum(nums)
ret = 0
count_next = True
for num in nums:
if num == 13:
count_next = False
elif count_next:
ret += num
else:
count_next = True
return ret
如果数字是13,记得不要数下一个数字。如果next为真(13不是最后一个数字),数一数。如果next不为true,数字也不为13,请记住数数下一个数字。当你说
返回和(nums[:i])
时,你将省略13后面的所有数字,而不仅仅是它后面的数字。您可以说返回和(nums[:i])+sum13(nums[i+2:])
,但是在sum13([4,6,13,13,4])
的情况下,4仍然会被计算。为了解决这个问题,你可以使用returnsum(nums[:i])+sum13(nums[i+1+(nums[i+1:i+2]!=[13]):])
当你说returnsum(nums[:i])
时,你将省略13后面的所有数字,而不仅仅是后面的数字。您可以说返回和(nums[:i])+sum13(nums[i+2:])
,但是在sum13([4,6,13,13,4])
的情况下,4仍然会被计算。要解决这个问题,您可以使用返回和(nums[:i])+sum13(nums[i+1+(nums[i+1:i+2]!=[13]):])
下一步是Python中的内置关键字,所以尝试使用不同的变量名;我不认为它会让你写,如果它写了,它就不应该写。@dwanderson你说得对,我只是有一个普通的python shell要尝试,所以我没有想到它。next
是python中的一个内置关键字,所以尝试使用不同的变量名;我不认为它会让你写,如果它写了,它就不应该写。@dwanderson你说得对,我只是有一个普通的python shell要尝试,所以我没有想到它。