Python返回列表的总和,其中5计数为两倍,而5计数后的数字为四倍

问题描述

给出一个列表,返回列表中所有数字的总和。但是,如果数字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语句后,我注意到该代码行实际上没有做任何事情……所以有什么提示吗?

快速说明:仅使用循环和if语句解决此问题

解决方法

定义一个变量,并在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