Python中的STDIN
我在学习Python,但遇到了一个对我来说比较难的任务。
任务是这样的:
输入两个字符串:
5
2 3 9 2 9
输出示例:
2 2 3 9 9
我知道怎么排序,但在输入方面遇到了问题。测试用例的输入是用标准输入(stdin)来处理的。我写了这个:
import sys
input = sys.stdin.read()
tokens = input.split()
n = int(tokens[0])
A = tokens[1:len(tokens)]
B = []
M = 10
for i in range(M):
B.append(0)
for j in range(n):
B[int(A[j])] = B[int(A[j])] + 1
k = 0
for i in range(M):
for j in range(B[i]):
A[k] = i
k = k + 1
print(A)
然后我得到了一个“超出范围”的错误,出现在这行代码:
B[int(A[j])] = B[int(A[j])] + 1
1 个回答
0
不要使用下面的代码:
input = sys.stdin.read()
tokens = input.split()
n = int(tokens[0])
A = tokens[1:len(tokens)]
B = []
请使用以下代码:
input_n = sys.stdin.readline()
n = int(input_n)
input_tokens = sys.stdin.readline()
tokens = input_tokens.split()
A = tokens[0:len(tokens)]
B = []
你是在输入n和tokens的时候,每个都在不同的行上。所以需要调用sys.stdin.readline()两次。