运行时错误退出,错误状态为1

时间:2013-03-22 11:16:57

标签: python

问题是this: 我试图解决它,我想我也做了,但当我邮寄它进行评估时,它说

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()

我做错了什么?我很好奇为什么这个解决方案让我无法接受。

1 个答案:

答案 0 :(得分:4)

我怀疑你正在打击

    sys.exit("Error");

正如documentation

中所述
  

有些系统有一个约定,用于为特定退出代码指定特定含义,但这些通常都是不发达的; Unix程序通常使用2表示命令行语法错误,1表示所有其他类型的错误。如果传递了另一种类型的对象,则None等效于传递零,并且将任何其他对象打印到stderr并导致退出代码为1.

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

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

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