问题描述
给出一个列表,返回列表中所有数字的总和。但是,如果数字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之后的数字增加四倍。 {1}}基本上会索引5之后的元素,但是在尝试了一些print语句后,我注意到该代码行实际上没有做任何事情……所以有什么提示吗?
解决方法
定义一个变量,并在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
,
尝试这样(请在输入列表的长度范围内进行迭代:
#!/bin/sh
#SBATCH -n 1
#SBATCH -N 1
srun tar zxf julia-0.3.11.tar.gz
echo "prefix=/software/julia-0.3.11" > julia/Make.user
cd julia
srun make