首页 > 解决方案 > 为什么 python 不一次返回所有测试用例?为什么我再次按回车后才能显示最后一个测试用例?

问题描述

输入:

4
4
1 -2 3 -4
3
0 0 0
5
1 -1 1 -1 1
6
40 -31 -9 0 13 -40

首次运行代码时的输出:

YES
[1, -2, 3, -4]
NO
YES
[1, -1, 1, -1, 1]

再次按回车时的输出:

YES
[40, -31, -9, 0, 13, -40]

编码:

numberOfTestCase = int(input())

for i in range(numberOfTestCase):

    listLength = int(input())
    aList = [int(x) for x in input().split()]
    sumList = 0
    for x in range(listLength):
        sumList = aList[x] + sumList

    if sumList == 0:
        print("NO")
    else:
        print("YES")
        print(aList)

那么这个程序是做什么的呢? 该程序旨在计算列表的总和是否等于或不等于零,如果不等于零则返回列表。

输入说明
第一行:表示有多少个测试用例
第二行:表示第一个列表中有多少
个第三行:第一个测试用例/列表
第四个.....n:针对不同的测试用例重复第二行和第三行

我的问题:为什么 python 不一次返回所有测试用例?为什么我再次按回车后才能显示最后一个测试用例?

标签: pythonpython-3.x

解决方案


Python 不会一次返回所有测试用例,因为if检查总和并打印“YES”或“NO”的语句位于for循环内。在每次循环迭代中,您的代码执行以下操作:

  1. 将列表长度作为输入
  2. 将列表值作为输入
  3. 将列表中的值相加sumList
  4. 检查是否sumList == 0
  5. 打印“NO”或“YES”和列表

因此,如果我理解正确,解决您的问题的一种方法可能是创建两个forrange(numberOfTestCase). 第一个获取所有输入并将它们存储在listLengthand中aList。第二个检查是否满足条件并打印结果。

numberOfTestCase = int(input())

listLength = []
aList = []

for i in range(numberOfTestCase):

    listLength.append(int(input()))
    tmpList = [int(x) for x in input().split()]
    aList.append(tmpList)

for i in range(numberOfTestCase):
  sumList = 0
  for x in range(listLength[i]):
      sumList = aList[i][x] + sumList

  if sumList == 0:
      print("NO")
  else:
      print("YES")
      print(aList)

推荐阅读