Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python codeabbey:列表索引超出范围_Python - Fatal编程技术网

Python codeabbey:列表索引超出范围

Python codeabbey:列表索引超出范围,python,Python,问题是: 让我们像前面一样计算数字之和,但将每个数字乘以其位置(从左侧开始计算,从1开始)。例如,给定值1776,我们计算这些数字的加权和(我们称之为“wsd”),如下所示: 水务署(1776)=1*1+7*2+7*3+6*4=60 这是我的密码: digitlist = [] numlist = [] def splitdigit(number): numlist = [] digitlist = [] numlist.append(number) while

问题是: 让我们像前面一样计算数字之和,但将每个数字乘以其位置(从左侧开始计算,从1开始)。例如,给定值1776,我们计算这些数字的加权和(我们称之为“wsd”),如下所示:

水务署(1776)=1*1+7*2+7*3+6*4=60

这是我的密码:

digitlist = []
numlist = []
def splitdigit(number):
    numlist = []
    digitlist = []
    numlist.append(number)
    while number >= 1:
        number = number/10
        numlist.append(number)
    del numlist[-1]
    for ele in numlist:
        digitlist.append(ele%10)
    return digitlist
# digit part

# test if the split digit work here:
# print (splitdigit(1234))  it works
times = int(input())
raw = raw_input()
string = raw.split()
nlist = []
outbox = []
rout = 0
res = 0
n = 0


for item in string:
    nlist.append(int(item))
# print (nlist) [it worked]
for element in nlist:
    # check for split method : checked
    # formula to make the digit work: n = len(out) | while(n>1): n=n-1 
    # rout=out[-n]*n res=res+rout(res=0)
    n = len(splitdigit(element))
    print (n)
    res = 0
    while n >= 1:
        rout = (splitdigit(element)[(n*(-1))]) * n     # I HAVEN"T CHECK THIS FORMULA OUT !!!
        res = res + rout
        n = n + 1
    outbox.append(res)
    print (outbox)
print(" ".join(str(x) for x in outbox))
下面是我的运行错误:

> 3
9 15 1776
1
Traceback (most recent call last):
  File "13.py", line 39, in <module>
    rout = splitdigit(element)[(n*(-1))] * n     # I HAVEN"T CHECK THIS FORMULA OUT !!!
IndexError: list index out of range
>3
9 15 1776
1.
回溯(最近一次呼叫最后一次):
文件“13.py”,第39行,在
rout=splitdigit(element)[(n*(-1))]*n#我还没有检查出这个公式!!!
索引器:列表索引超出范围

我在交互式python中检查了它。我想我不是要一个超出范围的项目,但它给了我这个错误。我希望有人能帮助我。谢谢你们,爱你们所有人。

你们的想法太复杂了

def wsd(number):
    digits = [int(i) for i in str(number)]
    result = 0
    for index, value in enumerate(digits):
        result += (index + 1) * value
    return result

print(wsd(1776))
输出:

60

你永远增加n,所以是的,它将超出范围。
而n>=1
永远不会是假的,如果你所做的只是
n=n+1
。哦!是的,它应该是n=n-1。非常感谢你,哈哈,如果
value=1776
它只是
和(pos*int(数字)表示pos,digit在枚举中(str(value),start=1))