Как «пропустить» пустой ввод при работе с математикой?(Python) - PullRequest
0 голосов
/ 25 января 2019

Я работаю над калькулятором GPA, чтобы познакомиться с питоном / программированием. У меня это работает, когда есть вход для каждого класса. Однако я не уверен, как заставить переменную быть пропущенной, если ничего не введено для баллов / оценок классов, или заставить ее действовать как пустое число.

Я попытался добавить пустую строку в словарь и установить ее равной None, но все равно получаю ошибку.

grades = {
    'A+' : 4.00,
    'A' : 4.00,
    'A-' : 3.67,
    'B+' : 3.33,
    'B' : 3.00,
    'B-' : 2.67,
    'C+' : 2.33,
    'C' : 2.0,
    'C-' : 1.67,
    'D+' : 1.33,
    'D' : 1.0,
    'F' : 0.0,
    }

grd_num = []
cred = []

grd_num.append(grades[input('Enter the letter grade for your first class\n')])
cred.append(float(input('Enter the amount of credits that your first class is worth\n')))

grd_num.append(grades[input('Enter the letter grade for your second class\n')])
cred.append(float(input('Enter the amount of credits that your second class is worth\n')))

grd_num.append(grades[input('Enter the letter grade for your third class\n')])
cred.append(float(input('Enter the amount of credits that your third class is worth\n')))

grd_num.append(grades[input('Enter the letter grade for your fourth class\n')])
cred.append(float(input('Enter the amount of credits that your fourth class is worth\n')))

grd_num.append(grades[input('Enter the letter grade for your fith class\n')])
cred.append(float(input('Enter the amount of credits that your fith class is worth\n')))

grd_num.append(grades[input('Enter the letter grade for your sixth class\n')])
cred.append(float(input('Enter the amount of credits that your sixth class is worth\n')))

grd_num.append(grades[input('Enter the letter grade for your seventh class\n')])
cred.append(float(input('Enter the amount of credits that your seventh class is worth\n')))

grd_num.append(grades[input('Enter the letter grade for your eighth class\n')])
cred.append(float(input('Enter the amount of credits that your eighth class is worth\n')))


totGPA = ((grd_num[0] * cred[0]) + (grd_num[1] * cred[1]) + (grd_num[2] * cred[2]) + (grd_num[3] * cred[3]) + (grd_num[4] * cred[4]) + (grd_num[5] * cred[5]) + (grd_num[6] * cred[6]) + (grd_num[7] * cred[7]))/sum(cred)

print(totGPA)

Я хочу, чтобы пользователи имели возможность вводить столько классов, сколько они хотят, от 1 до 8. Прямо сейчас, пользователь может только ввести 8 классов без ошибок.

1 Ответ

0 голосов
/ 25 января 2019

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

grd = input('Enter the letter grade for your first class\n')
if grd != "":
    grd_num.append(grades[grd])
    cred.append(float(input('Enter the amount of credits that your first class is worth\n')))
else:
    grd_num.append(0.0)
    cred.append(0.0)

if grd != "":
    grd = input('Enter the letter grade for your second class\n')
    if grd != "":
        grd_num.append(grades[grd])
        cred.append(float(input('Enter the amount of credits that your second class is worth\n')))
    else:
        grd_num.append(0.0)
        cred.append(0.0)
else:
    grd_num.append(0.0)
    cred.append(0.0)


if grd != "":
    grd = input('Enter the letter grade for your third class\n')
    if grd != "":
        grd_num.append(grades[grd])
        cred.append(float(input('Enter the amount of credits that your third class is worth\n')))
    else:
        grd_num.append(0.0)
        cred.append(0.0)
else:
    grd_num.append(0.0)
    cred.append(0.0)

# REPEAT REPEAT REPEAT ...

if grd != "":
    grd = input('Enter the letter grade for your eighth  class\n')
    if grd != "":
        grd_num.append(grades[grd])
        cred.append(float(input('Enter the amount of credits that your eighth class is worth\n')))
    else:
        grd_num.append(0.0)
        cred.append(0.0)
else:
    grd_num.append(0.0)
    cred.append(0.0)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...