考虑stdin具有以下条目:
2
a
b
3
d
e
f
现在,我想先使用n= sys.stdin.readline()
来读取号码
然后使用功能n
将下一行ReadNLines(n)
读入列表。
所以预期的输出是:
List1 = ['a','b']
List2 = ['d','e','f']
这是我尝试过的。而且我正在寻找更好的计时性能。
import sys
def ReadNLines(n):
List =[]
for line in range(n):
List.append(sys.stdin.readline())
return List
if __name__ == "__main__":
n = sys.stdin.readline()
List1 = ReadNLines(n)
n = sys.stdin.readline()
List2 = ReadNLines(n)
答案 0 :(得分:0)
您需要删除sys.stdin.readline()
包含在结果中的换行符。并且您需要将n
转换为整数。
import sys
def ReadNLines(n):
List =[]
for _ in range(n):
List.append(sys.stdin.readline().strip())
if __name__ == "__main__":
n = int(sys.stdin.readline().strip())
ReadNLines(n)
n = int(sys.stdin.readline().strip())
ReadNLines(n)
由于您从不使用line
变量,因此约定将_
用作虚拟变量。您还可以将函数转换为列表理解:
def readNLines(n):
return [sys.stdin.readline().strip() for _ in range(n)]
答案 1 :(得分:0)
我认为这可以满足您的要求
import sys
def read_n_lines(n):
return [sys.stdin.readline().rstrip() for _ in range(n)]
if __name__ == "__main__":
count = 0
while True:
n = sys.stdin.readline().rstrip()
if not n: # Blank line entered?
break # Quit.
n = int(n)
result = read_n_lines(n)
count += 1
print(f'List{count} = {result}')
print('done')
样品运行-按下 Enter 键结束输入的每一行:
2
a
b
List1 = ['a', 'b']
3
d
e
f
List2 = ['d', 'e', 'f']
done