如果我做错了什么,我提前道歉,因为我是一个新的编程…
在我的计算机科学课上,他们要求有一个界面,允许用户创建具有作业名称和成绩的文件。我能够编写创建文件功能,但我在项目中要求的另一个功能有困难。在这个函数中,它要求打开。txt文件,打印。txt文件中的内容,打印所有作业阅读后文件中的作业总数,打印所有作业的平均成绩,以及打印字母成绩。这是目前为止我所做的,但它根本不起作用:
try:
sms=[]
with open(fileName, "r") as f:
print(f.read()) # prints grades
for line in f:
numbers = line.split('n') # split the scores form the text
s=0
for number in numbers:
try:
s=+int(number)
except:
print('cant cast int')
sms.append(s)
average=sum(sms)/len(fileName)
avg='F'
if average>= 90:
avg='A'
if average>= 80:
avg='B'
if average>= 70:
avg='C'
if average>= 60:
avg='D'
print('Average grade: '+str(average))
print('Letter grade assigned: '+str(avg))
except FileNotFoundError:
print('**Error: This file cannot be found**')
processmenu()
try语句是必需的。processmenu()重新启动它。我如何隔离文本文件,或者更具体地说,等级号(如12.0,56.0等),并制作/打印平均值这就是文本文件的样子,它们的长度取决于用户在创建文件时的输入,所以可能有20多个赋值。
Assignment 1: 12.0
Assignment 2: 56.0
Assignment 3: 76.0
请注意,此解决方案要求python 3.6或更高版本保留字典顺序,因为它使用字典。
输出:
Total number of assignments in file: 12
Grade for individual assignment:
Assignment 1 : 12.0 : F
Assignment 2 : 56.0 : F
Assignment 3 : 76.0 : C
Assignment 4 : 13.0 : F
Assignment 5 : 59.0 : F
Assignment 6 : 78.0 : C
Assignment 7 : 14.0 : F
Assignment 8 : 58.0 : F
Assignment 9 : 79.0 : C
Assignment 10 : 15.0 : F
Assignment 11 : 57.0 : F
Assignment 12 : 80.0 : B
Average grade for all assignments:
All assignments : 49.75 : F
代码:import re
from decimal import Decimal
file_name = "results.txt"
with open(file_name) as file_in:
lines = []
for line in file_in:
if re.match(r"^Assignmentsd+:s+d+.d+$", line):
lines.append(line)
def retProper(temp4):
global lines
temp5 = -1
for temp6 in range(len(lines)):
temp7 = len(lines[temp6].split(":")[1].strip().split(".")[1])
if temp7 > temp5:
temp5 = temp7
return round(Decimal(temp4),temp5)
grade_threshold = {retProper(0):"F", retProper(60):"D", retProper(70):"C", retProper(80):"B", retProper(90):"A"}
def getGradeLetter(temp2):
global grade_threshold
temp3 = list(grade_threshold)[0]
for key, elem in grade_threshold.items():
if (temp2 >= key):
temp3 = key
return grade_threshold.get(temp3)
print("Total number of assignments in file: "+str(len(lines)))
print("nGrade for individual assignment:")
for temp1 in range(len(lines)):
exec('print(lines[temp1].split(":")[0]+" : "+lines[temp1].split(":")[1].strip()+" : "+getGradeLetter(retProper('+lines[temp1].split(":")[1].strip()+')))')
print("nAverage grade for all assignments:")
temp10 = []
for temp8 in range(len(lines)):
exec("temp9 = retProper("+lines[temp8].split(':')[1].strip()+")")
temp10.append(temp9)
temp12 = retProper(0)
for temp11 in range(len(temp10)):
temp12 = temp12 + temp10[temp11]
average_grade_number = (temp12/len(temp10))
print("All assignments : "+str(average_grade_number)+" : "+getGradeLetter(average_grade_number))