我在填报夏令营申请表的时候,发现其中有一个要统计其中的各个科目成绩分数段的一个选项,而我又想起来这些天学的许多实例,想利用python编出一段可以处理这部分数据的一个程序,应用到的所有的模块均为我之前博客实例中的源代码。
填报信息需要的数据如下:
如图我们发现我们需要统计所有的成绩在各个分数段有多少科目,我也不知道一共有多少科目,如下是我的思路:
1、获取一段不定长的数据
我们可以使用计算统计量实例中的第一个函数
https://blog.csdn.net/a619398297/article/details/90552469
def getnum():
#获取不定长的数字
nums=[]
inumstr=input("请输入数字(回车退出):")
while inumstr !="":
nums.append(eval(inumstr))
inumstr=input("请输入数字(回车退出):")
return nums
2、主函数,给分数分类
我们可以使用在之前的bmi计算的分段的思想的代码进行改造:
https://blog.csdn.net/a619398297/article/details/90146348
在bmi中的代码为:
if bmi<18.5:
who,nat="偏瘦","偏瘦"
elif 18.5<=bmi<24:
who,nat="正常","正常"
elif 24<=bmi<25:
who,nat="正常","偏胖"
elif 25<=bmi<28:
who,nat="偏胖","偏胖"
elif 28<=bmi<30:
who,nat="偏胖","肥胖"
else:
who,nat="肥胖","肥胖"
我们改为:
for num in numbers:
if num>=90:
ch='优秀'
elif 80<=num<=89:
ch='良好'
elif 70<=num<=79:
ch='中等'
else:
ch='及格'
(因为我无不及格数据,所以可以直接将60—69作为else)
3、利用字典的数据类型来得到所需要的数据
在文本词频统计实例中,我们利用了字典类型来统计了出现词汇的频次。
https://blog.csdn.net/a619398297/article/details/90645992
原代码为:
for word in words:
counts[word]=counts.get(word,0)+1
items = list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
word,count=items[i]
print("{0:<10}{1:>5}".format(word,count))
我们发现,首先我们不需要排序,所以可以将转化为列表的部分可以不使用。
我们改为:
counts[ch] = counts.get(ch,0)+1
for ch in ['优秀','良好','中等','及格']:
print("{}:{}".format(ch,counts[ch]))
(counts[ch] = counts.get(ch,0)+1嵌套在for循环中)
而结果我发现:
错误原因是因为在字典中未出现“中等”这个键,所以会发生错误,所以如果使用这段程序就必须要在每一个分数段都存在至少一个数据,这是我们无法控制的情况。
所以我们需要 改进最后一行代码:
改为:
for ch in ['优秀','良好','中等','及格']:
print("{}:{}".format(ch,counts.get(ch,0)))
即为若没有此字符,则为0。
这样我们的程序的函数部分就完成了,加入主函数即可运行,完整代码如下:
#自行处理成绩排名
def getnum():
#获取不定长的数字
nums=[]
inumstr=input("请输入数字(回车退出):")
while inumstr !="":
nums.append(eval(inumstr))
inumstr=input("请输入数字(回车退出):")
return nums
def mean(numbers):
#分类函数
counts = {}
for num in numbers:
if num>=90:
ch='优秀'
elif 80<=num<=89:
ch='良好'
elif 70<=num<=79:
ch='中等'
else:
ch='及格'
counts[ch] = counts.get(ch,0)+1
for ch in ['优秀','良好','中等','及格']:
print("{}:{}".format(ch,counts.get(ch,0)))
n=getnum()
m=mean(n)
运行结果如下:
我们可以发现,在生活中我们有许许多多的地方可以使用python进行代码的编写,并且利用学过的代码内容和思想我们可以编出功能更加强大的代码,所以在生活中我们要善于发现,并且自己尝试利用工具去编写代码,耗费一些时间去进行更深入的探究(emmmmm…我在填信息的时候发现登陆失效了,时间太长了哈哈哈哈),这样一定能快速掌握一定的技巧的!