2016-04-02 6 views
-2

入力の最初の行には、テストケースの数を示す整数Tが含まれています。 Tテストケースの説明は以下のとおりです。 各テストケースの最初の行には、スペース数で区切られた2つの整数NとKが測定数と削除される最大値と最小値の数を示します。 2行目には、N個のスペースで区切られた、測定を示す整数A1、A2、...、ANが含まれています。Pythonで実行時エラーが発生しましたcodeChefでサブミットしても解決できません

各テストケースについて、K最小値とK最大値を削除した後の平均値を含む1行を出力します。

var1=int(input("t:")) 

while var1: 

    list1=[] 

    var2=int(input("n")) 
    var3=int(input("k")) 

    for i in range(var2): 
     list1.append(int(input())) 

    list1.sort() 

    print(list1) 

    for i in range(var3): 
     f=len(list1) 
     list1=list1[1:f-1] 

    sumOfList=sum(list1) 

    total=0 
    number=var2-(2*var3) 
    total=sumOfList/number 
    print("%.6f"%total) 
    var1-=1 

答えて

0
var2=int(input("n")) 

入力の行全体を読むと、整数に変換しようとします。各テストケースの最初の行は、2つのスペースで区切られた整数で構成されているため、input()は、の両方を含む完全な行を返します。入力ファイルの2行目は

 
1 2 

が含まれる場合、その後input()は、文字列1 2を返します。 int()で整数にそれを変換しようとすると失敗します:

>>> int('1 2') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: '1 2' 

あなたは、行を読んで、それを分割し、このような整数に各項目を変換することができます:

n, k = [int(x) for x in input().split()] 

同様の問題があります各テストケースの2行目を読み込もうとすると、スペースで区切られた数字のリストです。これで修正できます:

numbers = sorted(int(x) for x in input().split()) 
関連する問題