我正在解决hackerrank的一个问题,并且在阅读输入时遇到了问题。
输入格式为:
第一行:一个数字n
,告诉不行。我必须阅读的一行。
n行:两个以空格分隔的值,例如:
1 5
10 3
3 4
我想在两个列表中读取空格分隔值。 所以列表'a'应该是[1,10,3]而列表'b'应该是[5,3,4]。
这是我的代码:
dist = []
ltr = []
n = input()
for i in range(n):
ltr[i], dist[i] = map(int, raw_input().split(' '))
它给了我以下错误:
ltr [i],dist [i] = map(int,raw_input()。split(''))
IndexError:列表 分配指数超出范围。
答案 0 :(得分:4)
这是Python初学者常见的错误。
您正尝试将输入的值分配给列表dist
和ltr
中的特定单元格,但由于它们是空列表,因此没有可用的单元格。索引i
超出范围,因为索引根本没有范围。
因此,不是分配到列表中,而是添加到
之类的内容中dist = []
ltr = []
n = input()
for i in range(n):
a, b = map(int, raw_input().split(' '))
ltr.append(a)
dist.append(b)
请注意,我还通过插入空格来改进代码的格式。在学习开始时遵循良好的风格对你有好处,这样你以后就可以少花些时间了。
答案 1 :(得分:0)
这可能会以某种方式帮助你;这是解决这个问题的一种更简单的方法,因为你知道" 简单比复杂更好。":
dist=[]
ltr=[]
n=int(raw_input())
for i in range(n):
dist.append(int(raw_input()))
ltr.append(int(raw_input()))
print(dist)
print(ltr)
输出:
[1, 10, 3]
[5, 3, 4]