2017-05-06 4 views
0

Topcoder problemでコードを実行したときに、IndexError:リストインデックスが範囲外です。しかし、コードはPython IDLEで完全に機能しました。誰がどこに間違っているのか教えてもらえますか?IndexError:Topcoderサブミッションの範囲外のリストインデックス

Problem Info:

Definition Class:

CheeseSlicing Method: totalArea

Parameters: integer, integer, integer, integer

Returns: integer Method

signature: def totalArea(self, A, B, C, S):

Examples

0) 1 3 3 2

Returns: 0

One of the dimensions of this block is 1. Regardless of how we cut it, each piece will have one dimension equal to 1. As S=2, this means that producing a good slice is impossible. Hence, the maximum total surface area of good slices is 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 
+0

あなたのIDLEでこのコードがどのように完全に機能するかはわかりません。 split()関数は1つの項目でリストを返します。 –

+0

この問題の検証テストに問題がある可能性があります。 –

+0

たとえば、入力は '5 5 5 2'になり、split()関数は['5'、 '5'、 '2']を返します。 –

答えて

0

あなたdataが原因トップコーダーが提供するテスト入力で予期しないEOFに空であるので、あなたは、インデックスのエラーを取得しています。入力間にEOF例外を処理するコードを実装することができます。

+0

「コードを実装する」とはどういう意味ですか? –

+0

入力を取りながら例外処理を実装することができます – Tarptaeya

関連する問題