3

問題はこれです:私はそれを解決しようとしました、そして私もそうしたと思います、しかし私が評価のためにそれを郵送したときそれは言います

We have tested your solution, and while doing so we unfortunately
discovered the following error:
Run Time Error

Exited with error status 1

これが私のコードです:

import re
import sys
def fun():
    for ind in ratio:
        max_num = ratio_list[0]
        if ratio[ind] == max_num:
            print ind

    ratio_list.remove(ratio_list[0])

hits = []
song = []   
n,m = raw_input().split(' ',1)


for i in range(0,int(n)):
    h,n = raw_input().split(" ",1)

    is_number = isinstance( int(h), int )   
    is_string = len(n)<=30 and bool(re.match('[a-z_0-9]+$', n))
    if not(is_number and is_string):
        sys.exit("Error");
    hits.append(int(h))
    song.append(n)
ratio = {}
ratio_list = []
f_of_i = hits[0]
counter = 1
index = 0

for hit in hits:
    ratio_list.append(hit*counter)
    ratio[song[index]] = hit*counter
    index = index +1
    counter = counter +1

ratio_list.sort()
ratio_list.reverse()

for j in range(0,int(m)):
    fun()

私は何を間違っているのですか?なぜ解決策が受け入れられないのか、私は興味があります。

4

1 に答える 1

4

当たっていると思います

    sys.exit("Error");

ドキュメントで説明されているように:

一部のシステムには、特定の意味を特定の終了コードに割り当てるための規則がありますが、これらは一般的に未開発です。Unix プログラムは通常、コマンド ライン構文エラーに対して 2 を使用し、他のすべての種類のエラーに対して 1 を使用します。別のタイプのオブジェクトが渡された場合、None は 0 を渡すことと同等であり、その他のオブジェクトは stderr に出力され、終了コード 1 になります。

入力の検証を少し緩和する価値はありますか? 現在、仕様内に表示される入力を拒否するほど厳密です (たとえば、再生回数と曲のタイトルの間に 2 つのスペースがあるとします)。

もう 1 つの可能性は、コードが例外を発生させることです。私のマシンでは、これも終了コード 1 になります。

n最後に、バグではありませんが、呼び出された変数を再利用する方法は疑わしいスタイルだと思います。

于 2013-03-22T11:28:39.783 に答える