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 等效于传递零,并且任何其他对象都将打印到 stderr 并导致退出代码 1。

可能值得稍微放松一下输入验证?现在它非常严格,它会拒绝出现在规范中的输入(比如播放计数和歌曲标题之间是否有两个空格)。

另一种可能性是您的代码引发了异常。在我的机器上,这也会导致退出代码为 1。

最后,虽然不是错误,但我认为您重用被调用变量的方式n是有问题的风格。

于 2013-03-22T11:28:39.783 回答