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