簡體   English   中英

處理文本文件時出現回溯錯誤

[英]Traceback error when handling text files

我創建了此代碼,該代碼執行測驗,然后根據用戶輸入(類)將結果寫入文本文件。 所有文件處理代碼對我來說似乎都是正確的,但是當我運行該程序時,我遇到了“跟蹤(最近一次調用最近):跟蹤(最近一次調用最近):”錯誤,然后程序崩潰了。

我只是用不同的代碼遇到了同樣的問題,但是得到了答案,但是我沒有再犯我的錯誤(試圖一次將多個變量寫入文件),所以這次的答案不適用。

import random 

forename="" 
surname=""
classno=0
numberone=0 
numbertwo=0
correct=False
score=0
ops = ["+", "x", "-"] 



while forename == "" or forename.isnumeric():
    forename=input("What is your first name? ")
    if forename == "": 
        print("You have to enter your first name.")
    if forename.isnumeric() == True:
        print("Your name must contain letters.")

while surname == "" or surname.isnumeric():
    surname=input("What is your surname? ")
    if surname == "":
        print("You have to enter your name.")
    if surname.isnumeric() == True:
        print("Your name must contain letters.")

while classno not in [1,2,3]: 
    while True:
        try:
            classno=int(input("What class are you in? "))
            break
        except ValueError:
            print("That wasn't right. Please try again.")



for x in range(10): 
    operation=random.choice(ops) 

if operation == "-": 
    numberone=random.randint(0,10) 
    numbertwo=random.randint(0,numberone)

elif operation == "x":
    numberone=random.randint(0,12)
    numbertwo=random.randint(0,12) 

else:
    numberone=random.randint(0,100)
    numbertwo=random.randint(0,(100-numberone))

while True:
        try:
            answer=int(input("What is " + str(numberone) + str(operation) + str(numbertwo) + "? "))
            break 
        except ValueError: 
            print("Incorrect input. Please try again.")


if operation=="+":
    if answer==numberone+numbertwo:
        correct=True

elif operation=="-":
    if answer==numberone-numbertwo:
        correct=True

else:
    if answer==numberone*numbertwo:
        correct=True

if correct==True:
    print("Correct!")
    score=score+1

else:
    print("Wrong!")

correct = False



info = str(forename) + "," + str(surname) + "," + str(score) + "\n"    



if classno == 1:
    file=open("class1.txt", "a")

elif classno == 2:
    file=open("class2.txt", "a")

else:
    file=open("class3.txt", "a")


maxnames = sum(1 for line in file)
name = [[] for i in range(maxnames)]   #creates empty list


for count in range(maxnames):
    line = file.readline()   #defines one line
    line=line.strip("\n")   #defines where lines end
    data = line.split(",")  #defines each data particle

    name[count].append(data[0])   #puts name in
    name[count].append(data[1])   #puts scores in
    name[count].append(data[2])
    name[count].append(data[3])


if forename == name[c][0] and surname == name[c][1]:
    name[c][4]=name[c][3]
    name[c][3]=name[c][2]
    name[c][2]=score
else:
    file.write(info)

file.close()


print("You scored",score,"out of 10.")

這是我所看到的: 在此處輸入圖片說明

問題始於以下事實:您正在打開一個文件進行寫入(通過使用'a'模式),然后嘗試從中讀取文件。 如果將其更改為'r+'則問題可能會自行解決。 沒有實際的追溯,就無法確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM