微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用Python中的函数计算GPA

如何解决用Python中的函数计算GPA

好,所以我试图制作一个程序,其中用户必须输入课程的字母等级以及课程学分。总共有三门课程。它将每个课程的所有成绩积分(成绩*课程学分)相加,然后除以这三个课程的学分总数。

所以我输入了这些作为输入变量,然后一切正常:

http://localhost:3000/api/users

总体GPA应该是2.8888888888888889,但是我的程序打印出18.88888888888889。有人可以告诉我我在做什么错吗?

这是我的代码

Enter your course 1 letter grade: A
Enter your course 1 credit: 3
Grade point for course 1 is: 4.0
Enter your course 2 letter grade: B
Enter your course 2 credit: 2
Grade point for course 2 is: 3.0
Enter your course 3 letter grade: C
Enter your course 3 credit: 4
Grade point for course 3 is: 2.0

解决方法

注意您的操作顺序。

您得到的是:

anyValue is string

但是你想要的是

function test(foo: string | number | Date) {
    if (valueIsOfType(foo,"string")) {
        console.log(foo.toUpperCase()); // foo seen to be string here
    } else if (valueIsOfType(foo,"number")) {
        console.log(foo.toFixed(2)); // foo seen to be number here
    } else {
        console.log(foo.toUTCString()) // foo seen to be Date here
    }
}

test("hello"); // HELLO
test(Math.PI); // 3.14
test(new Date()); // Sat,12 Sep 2020 02:22:01 GMT

除法运算符(4*3) + (3*2) + ((2*4)/(3+2+4)) = 18.88... 的优先级比((4*3) + (3*2) + (2*4)) / (3+2+4) = 2.88... 高,因此没有任何括号表示除法前先进行所有加法,然后除法则将先进行除法运算。加权等级,然后添加其他加权等级。

有关运算符优先级的更多信息:6.17. Operator precedence

How do order of operations go on Python?

,

您应该使用它进行计算

GPA = ((getGradePoint(courseLetterGrade) * courseCredit) + (getGradePoint(courseLetterGrade2) * courseCredit2) + (getGradePoint(courseLetterGrade3) * courseCredit3)) / (courseCredit + courseCredit2 + courseCredit3)

遵循操作顺序PEMDAS的规则。由于首先使用/而不使用方括号。 。 以供参考。 https://www.mathsisfun.com/operation-order-pemdas.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。