Python中的STDIN

0 投票
1 回答
2336 浏览
提问于 2025-04-18 05:05

我在学习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()两次。

撰写回答