有人能帮我找到这个列表索引超出范围的解决方案吗?这是代码,希望对你有所帮助。 Plzz??
list1 = {
'I' : 1,
'V' : 5,
'X' : 10,
'L' : 50,
'C' : 100,
'D' : 500,
'M' : 1000
}
def func(x):
arr = []
i = 0
res = 0
j = i+1
for z in x:
arr.append(list1[z])
while j < len(arr):
if arr[i] >= arr[j]:
res+= arr[i]
elif arr[i] < arr[j]:
res+= arr[i]*-1
i+=1
print(func('VIII'))
我尝试使用长度函数但没有帮助。我还是个初学者,所以我需要很多帮助...
您收到该错误是因为您正在尝试访问列表中不存在的索引。在您的代码中,错误是由 while 循环引起的,因为您在递增 j 时没有检查它是否已到达列表末尾。您还应该在循环内递增 i 并更新 j 。 这应该有效:
list1 = {
'I' : 1,
'V' : 5,
'X' : 10,
'L' : 50,
'C' : 100,
'D' : 500,
'M' : 1000
}
def func(x):
arr = []
res = 0
for z in x:
arr.append(list1[z])
i = 0
while i < len(arr) - 1:
if arr[i] >= arr[i+1]:
res += arr[i]
else:
res -= arr[i]
i += 1
# add the value of the last symbol
res += arr[-1]
return res
print(func('VIII'))
您的循环将永远运行,因为您永远不会更新循环中的
j
变量。这是修改后的代码:
list1 = {
'I' : 1,
'V' : 5,
'X' : 10,
'L' : 50,
'C' : 100,
'D' : 500,
'M' : 1000
}
def func(x):
arr = []
i = 0
res = 0
j = i+1
for z in x:
arr.append(list1[z])
while i < len(arr):
if arr[i] >= arr[j]:
res += arr[i]
elif arr[i] < arr[j]:
res+= arr[i]*-1
i+=1
print(func('VIII'))
还请注意,您的代码中的
print(...)
不会打印任何内容,因为您没有从该函数返回任何值。
要在函数中返回一些东西:
return ...
。请注意,这将停止该功能。