我们都会面临计算平均学分绩点的问题,虽然只是加法与乘法的混合运算,但是当一个人计算全班同学的平均学分绩点时,这简直是个噩梦,所以呢,今天我们来做一个自动化的脚本文件,只要按顺序输入各科成绩即可自动得出结果下面开始:
首先看一下规则(以我自己所在系为例):
里面说的很明白了,就不再重述,接下来我们进行Python的代码实现。
首先根据成绩与绩点的对应关系,我们自然想到利用if-else结构;
然后要将用户输入的值的个位截取出来;
初步的代码是这样子的:
grade=0.0#初始化grade
score=int(raw_input("请输入0-100之间的整数成绩: "))
sc=score
s=str(sc)
mid2=int(s[1])#截取第二位
if 90
grade=grade+4.0+0.1*mid2
elif 80
grade=grade+3.0+0.1*mid2
elif 70
grade=grade+2.0+0.1*mid2
elif 60
grade=grade+1.0+0.1*mid2
else:
grade=0
测试了一下,没有出现问题,我们进行下一步:封装成函数
def f(class_name):
grade=0.0
score=int(raw_input("请输入0-100之间的整数成绩: "))
sc=score
s=str(sc)
mid2=int(s[1])
if 90
grade=grade+4.0+0.1*mid2
elif 80
grade=grade+3.0+0.1*mid2
elif 70
grade=grade+2.0+0.1*mid2
elif 60
grade=grade+1.0+0.1*mid2
else:
grade=0
return grade
现在,这个函数f已经可以被调用了,我们还需要一个调用函数f函数:
def getg():
sf=6.0*f('sf')
cwf=4.0*f('cwf')
gll=4.0*f('gll')
ty=1.0*f('ty')
my=3.0*f('my')
yy=3.5*f('yy')
jjx=3.0*f('jjx')
su=sf+cwf+gll+ty+my+yy+jjx
result=su/(6+4+4+1+3+3.5+3)
print"您的平均学分绩点为:", result
上述代码中sf,cwf等等都是课程的拼音首字母组合,它们分别代表数分,常微分,概率论,体育,马原,英语,微观经济学 。
现在我们就可以把上述代码合在一起了,全部代码以及使用方法如下:
# -*- coding: cp936 -*-
"""
使用方法:
运行本脚本,在Python的终端里输入 “ getg()”,
按照”数分,常微分,概率论,体育,马原,英语,微观经济学“
的顺序依次输入对应的成绩即可自动求解您的平均学分绩点
"""
deff(class_name):
grade=0.0
score=int(raw_input("请输入0-100之间的整数成绩: "))
sc=score
s=str(sc)
mid2=int(s[1])
if 90
grade=grade+4.0+0.1*mid2
elif 80
grade=grade+3.0+0.1*mid2
elif 70
grade=grade+2.0+0.1*mid2
elif 60
grade=grade+1.0+0.1*mid2
else:
grade=0
return grade
defgetg():
sf=6.0*f('sf')
cwf=4.0*f('cwf')
gll=4.0*f('gll')
ty=1.0*f('ty')
my=3.0*f('my')
yy=3.5*f('yy')
jjx=3.0*f('jjx')
su=sf+cwf+gll+ty+my+yy+jjx
result=su/(6+4+4+1+3+3.5+3)
print"您的平均学分绩点为:", result
假定某同学的数分,常微分,概率论,体育,马原,英语,微观经济学成绩分别为:65,76,70,86,60,71,85,演示如下:
再来一个:84,88,88,76,77,90,88
看来效果还不错。
时间匆忙,排版很乱,先到这儿,大家可以根据自己所在院系的规则进行改动下就可以使用了。
领取专属 10元无门槛券
私享最新 技术干货