これは私の最初の投稿です。生徒数を尋ねる関数があります。次に、各学生について、最初の 3 行に次の情報が含まれます。学生 ID、名前、およびその学期に受講したコースの数。これで、コースごとに、コース番号、単位時間、および学生が獲得したスコアのパーセンテージが一覧表示されます。
def rawdata():
semester = 1
if semester == 1:
raw_file = open('raw_data.txt', 'a')
total = 0.0
total2 = 0.0
num_students = int(input('Enter number of students: '))
for student in range(num_students):
raw_file.write('Start' + '\n')
student_id = input('Enter student ID: ')
name = input('Enter Name: ')
num_classes = int(input('Enter number of courses taken: '))
raw_file.write(student_id + '\n')
raw_file.write(name + '\n')
raw_file.write(str(num_classes) + '\n')
for classes in range(num_classes):
course_number = input('Enter Course Number: ')
credits = int(input('Enter Credit Hours: '))
GPA1 = float(input('Enter percentage grade for class: '))
raw_file.write(course_number + '\n')
raw_file.write(str(credits) + '\n')
raw_file.write(str(GPA1) + '\n')
total += credits
raw_file.write('End' + '\n')
raw_file.close()
print('Data has been written')
すべてのデータは txt ファイルにリストされているので、次のように raw_data.txt からこの情報を取得する必要があります (入力によって異なります)。
Start
eh2727
Josh D
2
MAT3000
4
95.0
COM3000
4
90.0
End
Start
ah2718
Mary J
1
ENG3010
4
100.0
End
それを処理して、各学生の GPA を計算できるようにします。開始/終了に含まれる各学生の情報ブロックがありますが、GPA を計算するために処理関数でこの情報を読み取る方法がわかりません。これは私がこれまでに持っているものです:
def process():
data = open('raw_data.txt', 'r')
results = open('process_results.txt', 'w')
buffer = []
for line in data:
if line.startswith('Start'):
buffer = []
buffer.append(line)
if line.startswith("End"):
for outline in buffer:
results.write(outline)
これは単に結果テキストにすべてを書き込むだけで、各ブロックの情報を個別に処理して GPA を計算する方法がわかりません。どんな助けでも大歓迎です。