(Python 3) Проблема с выводом - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь создать конвертер числа в класс, который принимает пользовательский ввод, а затем выплевывает эквивалент буквы. Моя проблема заключается в том, что всякий раз, когда я набираю число, оно выдает только буквенную оценку, а затем ниже, когда оно выдает «Ваша буквенная оценка - Нет!»

Моя цель - добраться до того места, где он выплевывает. «Ваш буквенный балл (letter_grade)!"

Код ниже:

grade = int(input("Please enter what you made on the test here:"))

def grade_converter(grade):
    if grade >= 94 and grade <= 100:
        return "A"
    elif grade >= 90 and grade < 94:
        return "A-"
    elif grade >=87 and grade < 90:
        return "B+"
    elif grade >= 84 and grade < 87:
        return "B"
    elif grade >= 80 and grade < 84:
        return "B-"
    elif grade >= 77 and grade < 80:
        return "C+"
    elif grade >= 74 and grade < 77:
        return "C"
    elif grade >= 70 and grade < 74:
        return "C-"
    elif grade >= 67 and grade < 70:
        return "D+"
    elif grade >= 64 and grade < 67:
        return "D"
    elif grade >= 61 and grade < 64:
        return "D-"
    else:
        return "F"

letter_grade = print(grade_converter(grade))

print("Your letter grade is " + str(letter_grade) + "!")

Ответы [ 3 ]

0 голосов
/ 09 мая 2018
while True:
    grade = int(input("Please enter what you made on the test here:"))
    if grade != -1:
        def grade_converter(grade):
            if grade >= 94 and grade <= 100:
                return "A"
            elif grade >= 90 and grade < 94:
                return "A-"
            elif grade >=87 and grade < 90:
                return "B+"
            elif grade >= 84 and grade < 87:
                return "B"
            elif grade >= 80 and grade < 84:
                return "B-"
            elif grade >= 77 and grade < 80:
                return "C+"
            elif grade >= 74 and grade < 77:
                return "C"
            elif grade >= 70 and grade < 74:
                return "C-"
            elif grade >= 67 and grade < 70:
                return "D+"
            elif grade >= 64 and grade < 67:
                return "D"
            elif grade >= 61 and grade < 64:
                return "D-"
            else:
                return "F"

        letter_grade = grade_converter(grade)

        print("Your letter grade is " + str(letter_grade) + "!")
    else:
        break

Если оценка! = -1 Когда пользователь не введет «-1», программа продолжится.

Каждый раз, когда он проходит цикл, он печатает новый оператор, поэтому оператор print находится внутри оператора "if".

else: если пользователь введет «-1», программа перестанет использовать синтаксис «break».

0 голосов
/ 09 мая 2018

Я мог бы прийти с 2 решениями для вашего кода. Измените свой код на это,

    letter_grade = grade_converter(grade)

Одна вещь, которую я хотел бы отметить, это то, что вы на самом деле возвращаете значения в виде строк, поэтому вам не нужно набирать приведение снова до str в вашем последнем печать выписка .

Итак, вместо этого,

    letter_grade = grade_converter(grade)

    print("Your letter grade is " + str(letter_grade) + "!")

Просто замените это на

    print("Your letter grade is " + grade_converter(grade) + "!")
0 голосов
/ 09 мая 2018

Единственное, что вам нужно изменить, это следующая строка

letter_grade = print(grade_converter(grade))

до

letter_grade = grade_converter(grade)

Почему?
потому что печать ничего не возвращает.

Работает, пока пользователь не закроет программу
измените все до следующего, кроме функции

while(True):
    grade = int(input("Please enter what you made on the test here:"))
    letter_grade = grade_converter(grade)
    print("Your letter grade is " + str(letter_grade) + "!")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...