2015-02-03 3 views
-3

Я работаю над калькулятором GPA в python 2. Однако я не могу заставить код работать так, как я хочу. Я надеялся, что если кто-то меня уволит и предоставит мне какое-то направление. Когда я добавляю оценки, я хочу, чтобы он вычислял GPA. Теперь он читает только букву или символ, но не оба вместе. Я поставлю A +, это даст мне .3 не 4.3. Если я положу несколько оценок, он будет читать только первый класс. Для части вводится все оценки, и мы получаем средний балл GPA.Python GPA Calculator

Вот код:

from sys import argv 

def gp(grade): 
    points = 0 
    if grade == 'A' or grade == 'a': 
     points += 4.0 
    if grade == 'B' or grade == 'b': 
     points += 3.0 
    if grade == 'C' or grade == 'c': 
     points += 2.0 
    if grade =='D' or grade == 'd': 
     points += 1.0 
    if grade == 'F' or grade =='f': 
     points += 0.0 
    if grade.endswith ('+'): 
     points = points + 0.3 
    if grade.endswith ('-'): 
     points = points - 0.3 
    for x in grade 
     return points = sum(points)/len(grade) 

if __name__ == '__main__': 
    grade = argv[1].replace(" ","") 
    print (("%.1f") % gp(grade)) 
+0

Как вы хотите, чтобы это работало и как оно работает сейчас? – Andy

+0

В чем вопрос? – BrenBarn

+0

Вы пробовали 'grade [0] == 'A''? Из вашего кода кажется, что «класс» может быть таким же, как «A +», и «A +»! = «A'' –

ответ

1

Поскольку это выглядит как домашнее задание, я не буду давать решение. Но я расскажу немного больше о том, что не так. Надеюсь, если вы поймете, что не так, вы сможете выяснить, как это сделать правильно.

Если ваш класс «A +», то это строка из 2 символов, первая из которых - A, а вторая - +. Может ли grade=='A' быть правдой? Как только вы это поймете, вам должно быть понятно, почему A+ не получает 4 части оценки.

Что касается того, почему это дает вам результат только для первого класса, что делает argv[1]? Это все оценки, которые вы отправили?

0
from sys import argv 

def gp(grade): 
    points = 0 
    if grade.lower() == 'a': 
     points += 4.0 
    if grade.lower() == 'b': 
     points += 3.0 
    if grade.lower() == 'c': 
     points += 2.0 
    if grade.lower() == 'd': 
     points += 1.0 
    if grade.lower() =='f': 
     points += 0.0 
    if grade[:0] == "+" 
     points = points + 0.3 
    if grade[:0] == "-" 
     points = points - 0.3 
    for x in grade 
     return points = sum(points)/len(grade) 

if __name__ == '__main__': 
    grade = argv[1].replace(" ","") 
    print (("%.1f") % gp(grade)) 

Я «исправил» инструкции if для букв сорта, но вы здесь, чтобы символы были там.

+0

[Ответы только на код не поощряются.] (Http://meta.stackexchange.com/questions/148272). Было бы лучше указать линии, которые нужно изменить, с объяснением. –

-1
'''This is a simple GPA calculator I was able to put together. Hope this help''' 

class GpaCalculator(): 
    '''Declare the variables''' 
    count = 0 
    hrs = 0 
    numberofclasses =0 
    totalhours = 0 
    totalPoints = 0.0 
    gpa = 0.0 
    '''Prompt the user for the number of classes taking''' 
    numberofclasses = int(input("Enter number of classes ")) 

    '''use for to loop ''' 
    for count in range(count, numberofclasses): 
     '''This is to keep track of the number of classes (Optional)''' 
     print("For class # ", count+1) 

     '''Prompt user for number of number of credit hours per class''' 
     hrs = int(input("Enter the credit hrs ")) 

     '''Prompt user to enter the letter grade''' 
     grade = input("Enter the letter grade ") 

     '''Use if statement to check the grade and increment points and total hours''' 

     if grade == 'A' or grade == 'a': 
      totalPoints = totalPoints + (hrs * 4) 
      totalhours = totalhours + hrs 
     elif grade == 'B' or grade == 'b': 
      totalPoints += (hrs * 3.0) 
      totalhours += hrs 
     elif grade == 'C' or grade == 'c': 
      totalPoints += (hrs * 2.0) 
      totalhours += hrs 
     elif grade == 'D' or grade == 'd': 
      totalPoints += (hrs * 1.0) 
      totalhours += hrs 
      '''If not A,B, C, D then it must be F. You can write validation to check in other lettes''' 
     else: 
      totalPoints += (hrs * 0.0) 
      totalhours += hrs 
    '''Calculate GPA based on the total points and total hours''' 
    gpa = totalPoints/totalhours 
    print("Your GPA is :", gpa) 

def main(): 
    gpa = GpaCalculator() 

if __name__ == '__main__':main()