IndexError:Topcoder 提交中的列表索引超出范围
Posted
技术标签:
【中文标题】IndexError:Topcoder 提交中的列表索引超出范围【英文标题】:IndexError: list index out of range in Topcoder submission 【发布时间】:2017-05-06 07:07:38 【问题描述】:当我在Topcoder problem 中运行我的代码时,它显示存在错误:IndexError: list index out of range。然而,代码在 Python IDLE 上运行良好。谁能告诉我哪里出错了?
问题信息:
定义类:
CheeseSlicing 方法:totalArea
参数:整数、整数、整数、整数
返回:整数方法
签名:def totalArea(self, A, B, C, S):
例子
0) 1 3 3 2
返回:0
这个块的维度之一是1。无论如何 我们切割它,每一块都有一个等于 1 的维度。当 S=2 时,这 意味着生产一个好的切片是不可能的。因此,最大 好切片的总表面积为0。
import sys
total=0
data=sys.stdin.read().split()
x,y,z,s=int(data[0]),int(data[1]),int(data[2]),int(data[3])
if min(x,y,z)==s:
print x*y*z/s
elif min(x,y,z)<s:
print 0
elif max(x,y,z)>s:
lines=[x,y,z]
while max(lines)>=2*s:
area=1
maxline=max(lines)
lines.pop(lines.index(maxline))
for line in lines:
area=area*line
total+=area
lines.append(maxline-s)
area=1
minline=min(lines)
lines.pop(lines.index(minline))
for line in lines:
area=area*line
total+=area
print total
【问题讨论】:
我不知道,这段代码如何在您的 IDLE 中完美运行。 split() 函数将返回包含一项的列表。 Topcoder 有可能在此问题的验证测试中遇到一些问题。 例如,输入为 '5 5 5 2',split() 函数将返回 ['5', '5', '5', '2']。 【参考方案1】:您收到索引错误,因为您的 data
是空的,因为 topcoder 提供的测试输入中出现意外的 EOF。您可以尝试实现您的代码来处理输入之间的 EOF 异常。
【讨论】:
可以在接受输入的同时实现异常处理以上是关于IndexError:Topcoder 提交中的列表索引超出范围的主要内容,如果未能解决你的问题,请参考以下文章
Pandas 中的 grouby() 函数返回 IndexError:索引 2 超出轴 0 的范围,大小为 2
尝试计算 numpy 数组列中的唯一项时出现“IndexError:数组索引过多”