size = len(home)
total_score = []
score = []
for counter in range(0, size):
print("Enter the Scores for", name[counter],":")
score[0].append = int(input("Judge 1: "))
score[0] = validate(0,10,score[0])
score[1] = int(input("Judge 2: "))
score[1] = validate(0,10,score[1])
当我运行上面的代码时,我得到以下错误,我已经尝试了一切来纠正它。
score[0].append = int(input("Judge 1: "))
IndexError:列表索引超出范围
答案 0 :(得分:2)
您将score
初始化为空列表。然后在循环的第一次迭代中,您尝试使用第一个元素执行某些操作。但是,列表为空,因此会产生索引错误。
注意,.append
将一个元素附加到列表的末尾。您需要在整个列表上执行此操作,而不是在该列表的元素上执行此操作。
score.append(int(input("Judge 1: ")))
答案 1 :(得分:2)
正如his answer中提到的@DavidG,您正在尝试通过执行以下操作来访问空列表的第一个元素:
score = []
// [...]
score[0] // anything with this
但即使纠正此问题,您也应该考虑以下因素:
您正在迭代name
(当您在循环中使用name[counter]
时)
但是,出于某种原因,您的counter
范围基于len(home)
。
如果home
的元素多于name
?
此外,为什么这两个街区没有共享相同的逻辑?
score[0].append = int(input("Judge 1: "))
// here ^^^^^^^
score[0] = validate(0,10,score[0])
score[1] = int(input("Judge 2: "))
// ^-- nothing there
score[1] = validate(0,10,score[1])
应该是(例如):
score.append(validate(0,10,int(input("Judge 1: "))))
score.append(validate(0,10,int(input("Judge 2: "))))
答案 2 :(得分:0)
针对您的具体问题,@ David G是正确的。 .append
仅用于将元素添加到列表的末尾。将元素添加到列表的正确代码是score.append(int(input("Judge 1"))
。
对于您要执行的操作,请尝试按以下方式创建列表:
score = [None] * 2
然后使用@Rafalon的答案中的代码。这样,score[0]
和score[1]
就不会触发索引超出范围错误。