Я не могу заставить мою l oop с аккумулятором работать нормально, выдает ошибку Python - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь создать программу, в которую будут входить название курса пользователя, номер, оценка и количество часов кредита для расчета баллов GPA и очков качества. Я считаю, что все расчеты верны, но я не уверен, потому что мой l oop сломан. Я пытаюсь сделать al oop, где итерация (ittNum) накапливается и сравнивается с вводом пользователем того, сколько классов было взято. По сути, я хочу, чтобы l oop и мои данные были возвращены для использования в итоговых вычислениях после того, как пользователь введет количество классов, которые они приняли.

Это мое последнее сообщение об ошибке.

Traceback (последний вызов был последним): файл "D: /Python/FinalProgram1.py", строка 40, в файле ClassGPA () "D: /Python/FinalProgram1.py", строка 13, в itGNA классаGPA = int ('') ValueError: недопустимый литерал для int () с основанием 10: ''

#Ask user's input for total classes taken
classesTaken = int(input('How many classes did you take? '))

#set function to take inputs and do calculations, should return values
#to variables defined
def ClassGPA():
    courseNum = input('What was the course number? ')
    courseName = input('What was the name of the course? ')
    courseGrade = input('What was your letter grade? ')
    courseHour = int(input('How many credit hours was the course worth? '))
    ittNum = int('')
    if courseGrade == ('A'): numGrade = 4.00
    elif courseGrade == ('A-'): numGrade = 3.67
    elif courseGrade == ('B+'): numGrade = 3.33
    elif courseGrade == ('B'): numGrade = 3.00
    elif courseGrade == ('B-'): numGrade = 2.67
    elif courseGrade == ('C+'): numGrade = 2.33
    elif courseGrade == ('C'): numGrade = 2.00
    elif courseGrade == ('C-'): numGrade = 1.67
    elif courseGrade == ('D+'): numGrade = 1.33
    elif courseGrade == ('D'): numGrade = 1.00
    elif courseGrade == ('F'): numGrade = 0.00
    qualityPoints = (numGrade * courseHour)
    print('Course:', courseNum, ', Course Name:', courseName, ', Quality Points:',\
          qualityPoints, ', GPA:', numGrade)
    ittNum = ittNum + 1
    totalHour += courseHour
    totalQual += qualityPoints
    totalGPA += numGrade
#Set loop condition
    if ittNum <= classesTaken:
        ClassGPA()
    else:
        return totalHour
        return totalQual
        return totalGPA

ClassGPA()

GPA = (totalGPA / totalQual)
print('Your total Quality Points for the semester were ', sum(totalQual))
print('Your total GPA for the semester was ', GPA```

1 Ответ

0 голосов
/ 04 мая 2020

Ваша ошибка здесь: ittNum = int('')

Вы пытаетесь привести пустую строку к int, это невозможно сделать.

РЕДАКТИРОВАТЬ:

Есть много других проблем с этим кодом.

  1. Это не все oop. Вместо этого это неправильное использование рекурсии.
  2. Ваша переменная classesTaken никогда не объявляется и не инициализируется.
  3. Значения, которые возвращает эта функция (если это когда-либо происходит, см. Проблему # 2), никогда не назначается ни на что.
  4. Вы можете только один раз вернуться из функции. Два элемента, возвращенные после первого, никогда не будут возвращены.
  5. Похоже, вы пытаетесь использовать возвращаемые переменные totalGPA и totalQual, это никогда не сработает, см. Проблему № 4.
...