2013-05-01 2 views
-2

У меня есть назначение Python под рукой, и мне было интересно, можете ли вы, ребята, указать мне в правильном направлении. Я до сих пор выполнял задания, но этот, кажется, немного более продвинутый, и в пятницу у меня есть среднесрочный период, в котором будут элементы этой программы, и я бы хотел, чтобы вы, ребята, добавили какое-либо понимание вы можете подумать, что это может быть полезно в отношении этой программы. Спасибо.Назначение GPA Python

«вход будет текстовый файл класса, который я назвал grade_file.py в моем случае, так что я мог изменить его с помощью редактора IDLE, в форме, как показано ниже.

COURSE A 4 
COURSE B 3 
COURSE C 5 
COURSE D 5 

Обратите внимание, что каждая строка состоит из трех частей информации, разделенных пробелами. Первое - это название курса, второе - градация букв, а третья - количество единиц. Для того, чтобы вычислить численное значение для оценки простая формула в графе письма, единственными правовыми значениями или буквами являются A, B, C, D и E, с численными значениями

A 4 
B 3 
C 2 
D 1 
E 0 

, так что E походит на наш F, и no + или - можно добавить после буквы.

Суммарные числовые точки рассчитываются путем суммирования продуктов единиц измерения времени численного значения оценки для всех курсов, а затем деления на общее количество единиц.

Напишите программу, которая может запросить у пользователя имя файла оценки и вычислить GPA из данных в файле. GPA должен быть распечатан точно в трех местах справа от десятичной точки. Ниже приведены результаты моей программы по входным данным выше, при этом пользовательский ввод выделен жирным шрифтом. (Обратите внимание, что грейдер будет использовать другой файл данных класса, с другим именем.)

Введите имя файла оценок:. Grade_file.py ГПД является 2,353"

Еще раз спасибо ребята

+1

Секундочку. «Ввод будет текстовым файлом ... grade_file **. Py ** ... поэтому я мог бы отредактировать его с помощью редактора IDLE« И это текстовый файл («КУРС A 4 КУРСА B 3 КУРС C 5 КУРС D 5') ?? Является ли ваш профессор дебилом? –

+2

Кроме того, вы вообще не проявили никаких усилий, кроме возможности копирования и вставки. Это не так, как работает StackOverflow, пожалуйста, прочитайте [FAQ] (http://stackoverflow.com/faq). Вам нужно написать это задание самостоятельно. Тем не менее, если у вас возникла определенная проблема с * конкретным * фрагментом кода, пожалуйста, не стесняйтесь обращаться за помощью. Но «как мне написать эту программу» вопросы здесь недействительны. –

+0

Вы не показали усилий и ясно, что вы еще не учились. Вы пытаетесь заставить сообщество сделать домашнее задание для вас, искусно попросив «советы». Красиво сыграл. (Not.) –

ответ

2

Edit: Намного приятнее версия (. также фиксированные REQ, чтобы заставить поплавок разделение в 2.7.x и т.д ..):

from re import findall 
GPAG = {"A":4,"B":3,"C":2,"D":1,"E":0} 

def calcGPA(ResultStr): 
    courses = [ dict(zip(["grade","units"],score)) for score in findall(r'COURSE\s(\w)\s(\d+)',ResultStr) ] 
    print(courses) 
    unitCount = sum([int(course["units"]) for course in courses]) 
    return sum([GPAG[course["grade"]]*int(course["units"]) for course in courses])/float(unitCount) 

fname = raw_input("Enter the name of the file of grades: ") 
with open(fname+".txt") as f: 
    print("The GPA is: %.3f" % calcGPA(f.read())) 

с файла:

COURSE A 4 
COURSE B 3 
COURSE C 5 
COURSE D 5 

Производит:

>>> 
Enter the name of the file of grades: GPA 
The GPA is: 2.353 
+0

Вы слишком добры. Ты пошел и написал все это для парня! –

+0

Мне нужно немного узнать о том, как работает GPA – HennyH