如何使用Python制作成绩计算器

时间:2018-12-10 16:07:06

标签: python python-3.x dictionary for-loop while-loop

我是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 :(得分:1)

input()方法读取一个字符串,但是您不能转换e。 G。 "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

答案 1 :(得分:1)

您需要在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

还有两个提示:如果某人的分数为90,则此代码将输出"You failed"。对于其中一种情况,您需要将等式设置为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

答案 2 :(得分:0)

缩进,已在编辑中修复:

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?