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 提交中的列表索引超出范围的主要内容,如果未能解决你的问题,请参考以下文章

[SRM613~] TaroCheckers

Pandas 中的 grouby() 函数返回 IndexError:索引 2 超出轴 0 的范围,大小为 2

尝试计算 numpy 数组列中的唯一项时出现“IndexError:数组索引过多”

KeyError:“likeCount”和IndexError:Python中的列表索引超出范围

csv,IndexError:列表索引超出范围

IndexError:带有 Google Cloud Vision API 的字节数组