因为此题循环次数不确定,在使用input()接受输入时,需要用到while循环。

n = int(input())
for i  in range(n):
    l,w,s =0,0,0
    while True:
        try:
            a=input()
            if a=='=====':
                break
            l+=1
            w += len(a.split())
            s+=len(a)
        except:
            break
    print(l,w,s)

更好的解决方案是使用sys.stdin()来一次性接受所有输入,再逐行处理:

import sys
# 读取所有输入(按行读取)
lines = [i.rstrip('\n') for i in sys.stdin]

# 解析测试组数T
T = int(lines[0].strip())

# 需要遍历的次数是len(lines)-1
row,word,character = 0,0,0
for i in range(1, len(lines)):
  if lines[i] != "=====":
    row += 1
    word += len(lines[i].split())
    character += len(lines[i])
  else:
    # 遇到“=====”,则输出上一组数据的信息
    print(row,word,character)
    row,word,character = 0,0,0
   
# 遍历结束还要输出一次(最后一组数据的信息)
print(row,word,character)
                   

整体用时对比: 1、使用input()+for循环+while循环 alt

2、使用sys.stdin+for循环 alt