尝试在Python中使用f.Write写入文本文件

2024-06-28 20:03:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将信息写入文本文件。我有一个班级“学生”有“头衔”和“等级” 我是python新手,不确定f.write的正确语法。 我已经用输入得到了一个学生的名字,在“stud”中,类型是“student”

我一直试图修改语法,但没有用

from studentStruct import Student
from assignments import Assignments

def SaveStudentToStudentList(stud):
    f = open("studentlist.txt", "a")
    f.write(str(stud.name) + (" ") + str(stud.grade) + ("\n"))
    f.close()

def CalculateStudentGrade(assignmentList, assignNum):
    sum = 0
    i = 0
    total = 0
    while i < assignNum:
        print("Enter the grade for " + assignmentList[i].title)
        mark = input("")
        sum += float(mark)*float(assignmentList[i].weight)
        total += float(assignmentList[i].weight)
        i += 1

    grade = round(sum/total)
    return grade

def DisplayStudentList(studentList, numOfStudents):
    return

numOfStudents = 0
studentList = []
assignmentList = []
assignNum = 0
canUseThree = False
canUseOne = True

print("|*|*|GRADEBOOK v1.0|*|*|\n(1): Enter First student and assessments\n(2): Display Student List\n (3): Enter New student\n (4): Exit\n")

while 1:
    choice = input("")

    if choice == "1":
        if not canUseOne:
            continue

        while 1:
            print("Enter an assignment name. Type STOP if done: \n")
            assign = input("")
            if assign == "STOP":
                break
            print("Enter the weight: \n")
            weight = input("")
            assignmentList.append(Assignments(assign, weight))
            assignNum += 1

        print("Enter the student name: ")
        StudentName = input("")
        grade = CalculateStudentGrade(assignmentList, assignNum)
        print(("Student has achieved ") +str(grade))
        if grade < 50:
            print("This student has failed the course.")
        if grade > 100:
            print("Student has over-achieved. A mark of 100 will be submitted.")
            grade = 100;
        studentList.append(Student(StudentName, grade))
        canUseOne = False
        SaveStudentToStudentList(studentList[numOfStudents])
        numOfStudents += 1

Tags: theinputifdefstudentgradeprintenter
2条回答

f.write可以将字符串作为参数。所以只要传递一个合适的字符串

f.write(str(stud.name)  + " " + str(stud.grade) + "\n")

您可以先创建文本字符串,然后再编写它

text = '{} {}\n'.format(str(stud.name), str(stud.grade))
f.write(text)

例如

text = '{} {}\n'.format(str('John'), str('A'))
#John A
f.write(text)

相关问题 更多 >