为什么我的Python代码返回NZEC错误

时间:2014-02-07 21:42:21

标签: python python-2.7

我正在尝试解决Sphere Online Judge(SPOJ)上的一个问题,它要求我打印1和n之间的所有整数,这些整数可以被x整除但不能被y整除。当我在Python上测试时,我的代码是正确的IDE但是当我尝试在SPOJ上输入它时,我得到运行时错误(NZEC),什么是NZEC,为什么我会得到它?这是我的代码:

test_cases = raw_input()
input = []
list = []
for z in xrange(int(test_cases)):
    input = raw_input()
    n,x,y = input.split(' ')
    for z in xrange(int(n)):
        if z%int(x) == 0 and z%int(y) != 0:
              list.append(z)
    answer1 = str(list).strip('[]')
    answer2 = answer1.replace(',', '')
    print answer2

1 个答案:

答案 0 :(得分:1)

你是在谈论this问题吗?

我在您的代码中看到了一些问题:

  1. 您正在获得NZEC,因为输入中可能有空行,您没有考虑到这一点。 (见下文有关解决此事的微不足道的修改)

  2. 此外,您的代码有一个错误,因为z从0到n-1开始,而z应该是> 1,所以z应该在xrange(2,int(n))

  3. 您不需要剥离,然后用空格替换逗号。你可以一次性完成(见下文)

  4. 我稍微修改了你的代码并通过了测试用例。

    def get_line():
        while True:
            line = raw_input().rstrip()
            if not line:
                pass
            else:
                return line
    
    test_cases = get_line()
    for _ in xrange(int(test_cases)):
        input = get_line()
        n,x,y = [int(z) for z in input.split(' ')]
        list = []
        for z in xrange(2,n):
            if z%x == 0 and z%y != 0:
                  list.append(z)
        answer1 = ' '.join(map(str,list))
        print answer1