Как сделать калькулятор оценок в Python - PullRequest
0 голосов
/ 10 декабря 2018

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

T_marks = 1100
data = {}
while True:
    ask = input("What do you want? ")
    if ask == "y":
        name = input("Enter your name: ")
        marks = int(input("Enter marks: "))
        data[name] = marks
        percentage =(marks / T_marks) * 100
    elif ask == "print":
        for (key,value) in data.items():
            print(key,"::",value)
            if percentage > 90:
                print("Passed with A grade")
            elif percentage >= 70 and percentage < 90:
                print("Passed with B grade")
            elif percentage >= 60 and percentage < 70:
                print("Passed with C grade")
            elif percentage >= 50 and percentage < 60:
                print("passed with D Grade")
            else:
                print("You failed")
    else:
        print("Your work has ended")
        break

Ответы [ 3 ]

0 голосов
/ 10 декабря 2018

Вам нужно вычислить percentage в случае print, это должно дать вам то, что вы хотите:

T_marks = 1100
data = {}
while True:
    ask = input("What do you want? ")
    if ask == "y":
        name = input("Enter your name: ")
        marks = int(input("Enter marks: "))
        data[name] = marks
    elif ask == "print":
        for (key,value) in data.items():
            # NOTE percentage is under the case when user asks for print
            percentage =(value / T_marks) * 100
            print(key,"::",value)
            if percentage > 90:
                print("Passed with A grade")
            elif percentage >= 70 and percentage < 90:
                print("Passed with B grade")
            elif percentage >= 60 and percentage < 70:
                print("Passed with C grade")
            elif percentage >= 50 and percentage < 60:
                print("passed with D Grade")
            else:
                print("You failed")
    else:
        print("Your work has ended")
        break

Также две подсказки: этот код выведет "You failed", если кто-то получил оценкуиз 90. Вам нужно установить равенство в 90 для одного из случаев.Также python имеет упрощенные сравнения, где and не требуется.Вот упрощенная версия с поправкой на случай 90, чтобы получить оценку A:

T_marks = 1100
data = {}
while True:
    ask = input("What do you want? ")
    if ask == "y":
        name = input("Enter your name: ")
        marks = int(input("Enter marks: "))
        data[name] = marks
    elif ask == "print":
        for (key,value) in data.items():
            percentage =(value / T_marks) * 100
            print(key,"::",value)
            if percentage >= 90:
                print("Passed with A grade")
            elif 90 > percentage >= 70:
                print("Passed with B grade")
            elif 70 > percentage >= 60:
                print("Passed with C grade")
            elif 60 > percentage >= 50:
                print("passed with D Grade")
            else:
                print("You failed")
    else:
        print("Your work has ended")
        break
0 голосов
/ 10 декабря 2018

Отступ, исправлено в редактировании:

T_marks = 1100
data = {}
while True:
    ask = input("What do you want? ")
    if ask == "y":
        name = input("Enter your name: ")
        marks = int(input("Enter marks: "))
        data[name] = marks
        percentage =(marks / T_marks) * 100
    elif ask == "print":
        for (key,value) in data.items():
            print(key,"::",value)
            if percentage > 90:
                print("Passed with A grade")
            elif percentage >= 70 and percentage < 90:
                print("Passed with B grade")
            elif percentage >= 60 and percentage < 70:
                print("Passed with C grade")
            elif percentage >= 50 and percentage < 60:
                print("passed with D Grade")
            else:
                print("You failed")
    else:
        print("Your work has ended")
        break

>>> What do you want? y
>>>Enter your name: Alex
>>>Enter marks: 12
>>>What do you want? y
>>>Enter your name: Michael
>>>Enter marks: 22
>>>What do you want? print
>>>Alex :: 12
>>>You failed
>>>Michael :: 22
>>>You failed
>>>What do you want?
0 голосов
/ 10 декабря 2018

Метод input() читает строку, но вы не можете конвертировать, например, "4 4 4 5" в int.Метод split() без аргументов создает список слов в строке следующим образом:

"4 5 5" -> ["4", "5", "5"]

Измените ваш ввод на:

marks_string = input("Enter marks: ")
marks = [int(mark) for mark in marks_string.split()]  # convertion to int

И измените расчет в процентах:

percentage =(sum(marks) / T_marks) * 100
...