给定一个列表,返回列表中所有数字的总和。但是,如果数字5出现在列表中,则必须将其加倍,并且紧接在5之后的数字需要翻两番。所以下面的列表1,2,4,1,5,2应该返回26,5,1,6应该返回20。
这就是我到目前为止所知道的:
def list_sum(x):
if len(x) == 0:
return 0
else:
sum2 = 0
for i in x:
if i == 5:
sum2 += 5*2
if x[i - 1] == 5:
sum2 += i * 4
else:
sum2 += i
return sum2我可以成功地完成问题的第一部分,将列表中的任何5乘以2,但在第二部分遇到麻烦,我必须要求代码将5之后的数字增加四倍。我原以为x[i - 1] == 5基本上会索引5之后的元素,但在尝试了几个打印语句后,我注意到这行代码实际上并没有什么作用……有什么建议吗?
快速说明:仅使用循环和if语句来解决此问题
发布于 2020-10-13 09:56:37
定义一个变量并在出现5时更改它
def list_sum(x):
IfFive = False
if len(x) == 0:
return 0
else:
sum2 = 0
for i in x:
if i == 5:
sum2 += 5*2
IfFive = True
elif IfFive:
sum2 += i * 4
IfFive = False
else:
sum2 += i
return sum2结果:
print(list_sum([5, 1, 6]))
>>> 20发布于 2020-10-13 10:00:22
尝试这样做(在输入列表的长度范围内迭代:
mylist = [1, 2, 4, 1, 5, 2]
def list_sum(thelist):
sum2 = 0
for x in range(len(thelist)):
if thelist[x] == 5:
sum2 += 5*2
elif thelist[x-1] == 5:
sum2 += thelist[x]*4
else:
sum2 += thelist[x]
return sum2
print(list_sum(mylist))https://stackoverflow.com/questions/64327379
复制相似问题