问题是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()
我做错了什么?我很好奇为什么这个解决方案让我无法接受。
答案 0 :(得分:4)
我怀疑你正在打击
sys.exit("Error");
中所述
有些系统有一个约定,用于为特定退出代码指定特定含义,但这些通常都是不发达的; Unix程序通常使用2表示命令行语法错误,1表示所有其他类型的错误。如果传递了另一种类型的对象,则None等效于传递零,并且将任何其他对象打印到stderr并导致退出代码为1.
可能值得放松一点输入验证吗?现在它非常严格,它会拒绝我在规范中出现的输入(比如播放计数和歌曲标题之间是否有两个空格)。
另一种可能性是您的代码引发异常。在我的机器上,这也会导致退出代码为1。
最后,虽然不是错误,但我认为重用名为n
的变量的方式是有问题的。