python编程考试、作业平均成绩和打印成绩

2024-05-13 19:41:21 发布

您现在位置:Python中文网/ 问答频道 /正文

请我试着写一个Python程序来计算一个有两个作业和两次考试的学生的期末成绩。作业占班级成绩的40%,考试占班级成绩的60%。程序应执行以下步骤:

  1. 向用户询问assignment1、assignment2、exam1和exam2等级。所有成绩都满分100分。在
  2. 计算作业的平均值。在
  3. 计算考试的平均数。在
  4. 使用以下公式计算最终坡度: 期末成绩=.4*作业平均成绩+.6*考试平均成绩。在
  5. 将最终成绩格式化为小数点后2位。在
  6. 显示一条信息,告诉学生期末成绩。在

这是我的计划:

from math import *

def main():


    Assignment1 = eval(input("Please enter the score for Assignment 1: "))
    Assignment2 = eval(input("Please enter the score for Assignment 2: "))
    Assignment_total = Assignment1 + Assignment2
    Assignment_average = Assignment_total/2
    print("The average of the assignment is", round(Assignment_average, 2))

    Exam1 = eval(input("Please enter the score for Exam 1: "))
    Exam2 = eval(input("Please enter the score for Exam 2: "))
    Exam_total = Exam1 + Exam2
    Exam_average = Exam_total/2
    print("The average of the Exam is", round(Exam_average, 2))


    Final_grade = 0.4 * Assignment_average + 0.6 * Exam_average

    if 90 <= Final_grade <= 100:
        return 'A'
    elif 80 <= Final_grade <= 89:
        return 'B'
    elif 70 <= Final_grade <= 79:
        return 'C'
    elif 60 <= Final_grade <= 69:
        return 'D'
    else:
        return 'F'

main()

我不能让它打印成绩。请帮帮我


Tags: theforinputreturneval作业finalgrade
3条回答

您需要通过将其分配给一个变量来调用该函数,然后进行打印。见下文:

from math import *

def main():
    Assignment1 = eval(input("Please enter the score for Assignment 1: "))
    Assignment2 = eval(input("Please enter the score for Assignment 2: "))
    Assignment_total = Assignment1 + Assignment2
    Assignment_average = Assignment_total/2
    print("The average of the assignment is", round(Assignment_average, 2))

    Exam1 = eval(input("Please enter the score for Exam 1: "))
    Exam2 = eval(input("Please enter the score for Exam 2: "))
    Exam_total = Exam1 + Exam2
    Exam_average = Exam_total/2
    print("The average of the Exam is", round(Exam_average, 2))


    Final_grade = round(0.4 * Assignment_average + 0.6 * Exam_average)

    if 90 <= Final_grade <= 100:
        return "Your final grade is %s: A" %(Final_grade)
    elif 80 <= Final_grade <= 89:
        return "Your final grade is %s: B" %(Final_grade)
    elif 70 <= Final_grade <= 79:
        return "Your final grade is %s: C" %(Final_grade)
    elif 60 <= Final_grade <= 69:
        return "Your final grade is %s: D" %(Final_grade)
    else:
        return "Your final grade is %s: F" %(Final_grade)

mygrades = main()
print (mygrades)

输出

^{pr2}$

接受我的建议和@toad2222的建议,同时摆脱那些可怕的eval

from math import *

def main():
    Assignment1 = int(input("Please enter the score for Assignment 1: "))
    Assignment2 = int(input("Please enter the score for Assignment 2: "))
    Assignment_total = Assignment1 + Assignment2
    Assignment_average = Assignment_total/2
    print("The average of the assignment is", round(Assignment_average, 2))

    Exam1 = int(input("Please enter the score for Exam 1: "))
    Exam2 = int(input("Please enter the score for Exam 2: "))
    Exam_total = Exam1 + Exam2
    Exam_average = Exam_total/2
    print("The average of the Exam is", round(Exam_average, 2))


    Final_grade = 0.4 * Assignment_average + 0.6 * Exam_average
    print("The final grade is", round(Final_grade, 2))

    if 90 <= Final_grade <= 100:
        print('A')
    elif 80 <= Final_grade <= 89:
        print('B')
    elif 70 <= Final_grade <= 79:
        print('C')
    elif 60 <= Final_grade <= 69:
        print('D')
    else:
        print('F')

main()

更新

只是为了好玩而重写。你可以随意忽略、获取灵感或提出问题。在

^{pr2}$

你在这里到处都是。您有return,但您没有返回任何内容(即,您必须先调用grade = main(),然后再调用print(grade)。在

看看我下面的评论:

# nothing you are doing requires the math module
# eval() and round() are built-ins; we dont even need eval()
## from math import *

def main():
    # variable names = short & sweet + meaningful
    a1 = int(input("Please enter the score for Assignment 1: "))
    a2 = int(input("Please enter the score for Assignment 2: "))
    atot = a1 + a2
    aavg = atot / 2
    print ("The average of the assignment is", round(aavg, 2))

    e1 = int(input("Please enter the score for Exam 1: "))
    e2 = int(input("Please enter the score for Exam 2: "))
    etot = e1 + e2
    eavg = etot / 2
    print ("The average of the Exam is", round(eavg, 2))

    fingrd = ((0.4 * aavg) + (0.6 * eavg))

    if (90 <= fingrd <= 100):
        print (fingrd, ': A') # edit: included print format you commented
    # no need to do <= on the upper bounds
    # < upper_bound includes <= your previous lower_bound - 1
    # i.e. 80 <= fingrd < 90 equates to 80 <= fingrd < 90
    elif (80 <= fingrd < 90): 
        print (fingrd, ': B')
    elif (70 <= fingrd < 80):
        print (fingrd, ': C')
    elif (60 <= fingrd < 70):
        print (fingrd, ': D')
    else:
        print (fingrd, ': F')

if __name__ == '__main__':
    main()

输出:

^{pr2}$

相关问题 更多 >