我是这个平台的新手,请原谅这个问题中的任何错误。我正在尝试编写一个程序,允许教师在20,25和35中分别输入30个学生的名字和他们的分数进行3次测试。我需要它来保存输入的细节,这是我遇到问题的地方。它没有保存细节。
下面是我的'WriteToFile'功能:
def WriteFile(Names, MarkTest1, MarkTest2, MarkTest3):
FileName = raw_input('Please Enter The File Name: ')
print
WriteFile = open(FileName, 'w')
Lines = ''
for Pupil in range(len(Names)):
Lines = Lines + str(Names[Pupil]) + ', ' + str(MarkTest1[Pupil]) + ', ' + str(MarkTest2[Pupil]) + ', ' + str(MarkTest3[Pupil]) + '\n'
WriteFile.write(Lines)
WriteFile.close()
以下是输入和保存详细信息的程序的一部分:
if Choice in 'Ww':
for P in range(Pupils):
Name = getName("Please Enter The Students Name: ")
print
Mark1 = getMark("Please Enter The Students Mark For Test 1: ", 20)
print
Mark2 = getMark("Please Enter The Students Mark For Test 2: ", 25)
print
Mark3 = getMark("Please Enter The Students Mark For Test 3: ", 35)
print
Names.append(Name)
MarkTest1.append(Mark1)
MarkTest2.append(Mark2)
MarkTest3.append(Mark3)
WriteFile(Names, MarkTest1, MarkTest2, MarkTest3)
getContinueChoice()
希望有人能提供帮助,谢谢。
答案 0 :(得分:0)
IndexError: string index out of range
。
离。
a = 'Hello, World!'
print a[0]
print a[42] # This will cause IndexError
b='24'
print b[1] # prints 2
print b[2] # IndexError
在您的情况下,您正在尝试访问MarkTest1[Pupil]
。
我从调用函数看到MarkTest1
是Mark1
。这基本上是用户输入。
我假设Names
的长度大于此字符串输入。假设Names
的长度是3.Mark1是'24'
(参见这是一个字符串)。
在循环中
for Pupil in range(len(Names)):
...
学生假设[0,1,2]
并且,当您访问我的示例中基本为MarkTest1[2]
或'24'[2]
的{{1}}时。
所以,你得到的是IndexError。
现在你做什么:
从这里你需要调试。通过打印错误,在错误发生之前查看每个变量到底是什么。给你一个洞察力。而且,很多学习。
玩得开心调试:)