2017-04-26 53 views
-1

我對這個平臺很陌生,所以請原諒在這個問題上的任何錯誤。我想寫一個程序,讓老師輸入30個學生的姓名和他們的分數,以每20,25和35分別進行3次考試。之後我需要它來保存輸入的細節,這是我遇到問題的地方。它不保存細節。儘管沒有出現任何錯誤,My WriteToFile函數並沒有保存任何內容?

下面是我的 '將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() 

希望有人能幫助,謝謝。

+5

請修復您的縮進。目前很難理解屬於該功能的內容。 – JohanL

+0

此外,如果您包含追蹤回溯 –

+2

歡迎來到StackOverflow,它會更容易幫助您。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在發佈您的MCVE代碼並準確描述問題之前,我們無法爲您提供有效的幫助。 我們應該能夠將給定的代碼粘貼到文本文件中並重現問題。 – Prune

回答

0

IndexError: string index out of range當您嘗試訪問超出其長度的字符串之間的字符時出現許多其他原因。

ex。

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]或在我的例子b[2]

所以,你正在得到IndexError。

現在,你會怎麼做:

從這裏你需要調試。在錯誤發生之前通過打印來查看每個變量的確切含義。給你一個見解。而且,很多學習。

玩得開心調試:)

+0

非常感謝您的回答,但我現在遇到了另一個問題,請查看我的新問題。 –

+0

好的。爲了未來。請保持問題不變並提出新問題。 – Vasif

+0

我建議你檢查一下你是否可以用隨機文本編寫一個文件。然後,嘗試編寫您創建的字符串。 – Vasif

相關問題