尽管没有出现任何错误,我的WriteToFile函数仍未保存任何内容?

时间:2017-04-26 19:05:37

标签: python python-2.7

我是这个平台的新手,请原谅这个问题中的任何错误。我正在尝试编写一个程序,允许教师在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()

希望有人能提供帮助,谢谢。

1 个答案:

答案 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]

我从调用函数看到MarkTest1Mark1。这基本上是用户输入。

我假设Names的长度大于此字符串输入。假设Names的长度是3.Mark1是'24'(参见这是一个字符串)。 在循环中

for Pupil in range(len(Names)):
    ...

学生假设[0,1,2] 并且,当您访问我的示例中基本为MarkTest1[2]'24'[2]的{​​{1}}时。

所以,你得到的是IndexError。

现在你做什么:

从这里你需要调试。通过打印错误,在错误发生之前查看每个变量到底是什么。给你一个洞察力。而且,很多学习。

玩得开心调试:)