Python 将文本和整数写入文件,然后从文件中读取以计算平均成绩

Python 将文本和整数写入文件,然后从文件中读取以计算平均成绩,python,file-io,average,Python,File Io,Average,这就是我想要展示的。这是两种功能的副产品。 第一段是create()函数,它创建“grades.txt”文件。我想我很容易就下来了 其次,下一段来自“Retrieve()”函数,它从“grades.txt”文件中读取并显示类名和GPA,然后计算这些类的平均值并显示它们。 我觉得我正处在关键时刻,但我被困在哪里,因为我被“STRG”错误困扰着 def main(): >创建() >检索() > >def create(): >outfile=open('grades.txt',

这就是我想要展示的。这是两种功能的副产品。 第一段是create()函数,它创建“grades.txt”文件。我想我很容易就下来了

其次,下一段来自“Retrieve()”函数,它从“grades.txt”文件中读取并显示类名和GPA,然后计算这些类的平均值并显示它们。 我觉得我正处在关键时刻,但我被困在哪里,因为我被“STRG”错误困扰着

def main(): >创建() >检索() > >def create(): >outfile=open('grades.txt','w') >计数\u文件=0 > >#收集类名或按“回车”退出 >class_或_exit=input('输入课程名称或输入退出:') > >#如果按下“回车”键,则创建While循环退出并关闭文件 >当类_或_退出时="": >计数_文件+=1 >等级=(输入('输入已达到的等级(整数):')) >class_或_exit=input('输入课程名称或输入退出:') > > > >#将信息写入文件 >outfile.write(str(类或类退出)+'\n') >outfile.write(str(grade)+'\n') > >#关闭文件 >outfile.close() >打印('文件已创建并关闭') >返回等级、等级或出口 > >def retrieve(): >打印('这是您输入的课程的GPA:') >outfile=open('grades.txt','r') >总计=0.0 >计数=0 >class_或_exit=outfile.readline() >坡度=浮动(outfile.readline()) > >如果等级>=90: >等级=4.0 >计数=计数+1 >打印(f“{class_或_exit:}class”+str+“{grade:.2f}”) >elif等级>=80: >等级=3.0 >计数=计数+1 >打印(f'{class_或_exit:}class'+str+“{grade:.2f}”) >elif等级>=80: >等级=2.0 >计数=计数+1 >打印(f'{class_或_exit:}class'+str+“{grade:.2f}”) >elif等级>=80: >等级=1.0 >计数=计数+1 >打印(f'{class_或_exit:}class'+str+“{grade:.2f}”) >
>main()。请仔细注意这篇文章与您所写内容之间的差异

def create():
    outfile = open('grades.txt', 'w')

    #Gather class name or press 'Enter' to quit
    class_or_exit = input('Enter course name or Enter to quit: ')

    #Create While loop if 'Enter' is pressed exit and close file
    while class_or_exit !="":
        grade =(input('Enter grade (interger) achieved: '))
        #Write info to the file
        outfile.write(class_or_exit + '\n')
        outfile.write(grade + '\n')
        class_or_exit = input('Enter course name or Enter to quit: ')

    #Close file
    outfile.close()
    print('File was created and closed')
    return grade, class_or_exit
    
def retrieve():
    print('Here is your GPA for the classes you entered:')
    outfile = open('grades.txt', 'r')
    total = 0.0
    count = 0
    while True:
        class_or_exit = outfile.readline()
        if not class_or_exit:
            break
        grade = float(outfile.readline())
        count += 1
    
        if grade >= 90:
            total += 4.0
        elif grade >= 80:
            total += 3.0
        elif grade >= 70:
            total += 2.0
        elif grade >= 60:
            total += 1.0

    print("Your GPA is", total/count)

def main ():
    create()
    retrieve()
    
main()

我不知道什么是“STRG”错误。你确实有一些问题。在
print
语句中,冒号应该在大括号之外:
{class\u或\u exit}:
。接下来,我不知道你想用
+str+
做什么,但那是错误的。在
create
函数中,您不需要
str
绕过
class_或_exit
grade
;它们已经是字符串了。同样,你在一个循环中要求分数,但是你只把最后一个写入文件,你只从文件中读取一个。在
print(f“{class\u或{u exit:}class”+str+“{grade:.2f}”)中str是什么:在书中,所有示例都以示例{amount:.2f}的形式显示了这一点。我收到了帮助。str打印(f“{class_或_exit:}class”+str+“{grade:.2f}”)应该生成这行数据“{class_或_exit}-(从grades.txt文件中记录的用户输入中输入的类)类GPA是{grade}-(输入的类的显示等级)在库特·丹泽尔不太好的最新电影《让你抓到的是小事情》中,我看到现在我没有在“if-elif”之前用“while-True:”扩展while循环的参数“声明。非常感谢你。我正在学习一门全在线的python课程,它全部来自一本书。作为一个更加直观的学习者,我有时会被概念在现实世界中的应用所困扰。现在,请允许我指出,您根本不需要将这些概念写入文件。您可以在获取输入的同一个循环中进行计算。