Ⅰ 用python编写学生成绩分析系统
学生的数量我们并不知道有多少,有可能是1个学生,但也有可能是100000个学生
但是我们能确定的是学生的学号,因为每个学生的学号都是不一样的(除非出现意外情况)
那么我们可以以学生的学号来排序,比如000是小明,那么我们把000放在list的第一位,把小明这个人的名字放在学生名的list的第一位,那么他的所有的成绩分数什么的都会在每个list的第一位
现在我们可以开始做第一步,寻找学生。 寻找学生我们需要一个parameter,一般来说会给学号或者是名字,那么我们可以用linear search从list的头开始寻找到尾。如果没有到达list的尾部而且还寻找到了学生,那么return 他在这个list的位置,如果到达了list的底部,return一个message告诉对方系统里没有这个学生
计算学生总成绩:我们已经知道了这个学生名字或者学号在各个list的位置了,那么这个学生所对应的成绩分数都在各个list的相同的位置,那么我们只用上个方法return的数字去寻找各个考试的分数,然后根据百分比相乘后加起来,这就是这个学生的总成绩
排名:这个要根据什么来排,如果你是根据总成绩来排的话,你需要去比较所有的分数。这个就需要sorting search,至于方法有很多,应该有六种,具体的我记不清楚,不过你可以去网上找找
用字母代表成绩:这个也很简单,既然你都知道分数了,那么就设置一个区域,比如90-100是优秀,那么把所有在90-100的分数全部变成A然后存入list里面就行了(记得要按照顺序!!)
班级平均分:emmmm这个是咋算来着的。。。。应该是把所有学生在某一次作业或者考试的成绩全部加起来后除以全部人数吧。。那么你自己按照一个顺序,把所有的分数加起来除以所有的人数后再存入list里面就行了
Ⅱ 如何对python编程中的列表元素按成绩高低进行排序呢
最简单的办法就是需要指定列表排序方法中的参数“key”。代码如下:
第一种:
stu=[['john',79],['mame',96],['herry',85],['lili',95],['ziling',63]]
def takeSecond(elem):
return elem[1]
stu.sort(key=takeSecond,,reverse=True)
print(stu)
第二种:
stu=[['john',79],['mame',96],['herry',85],['lili',95],['ziling',63]]
s=sorted(stu,key=lambda student: student[1],,reverse=True)
print(s)
Ⅲ python里有一个列表,列表里有几个小列表,小列表里写的是同学的名字和成绩,如何带着列表给分数排序
#冒泡排序:
scoreList=[
['a',98],
['c',45],
['b',70],
['d',85],
['h',85],
['f',92],
['g',30],
['e',65]
];
arrLen=len(scoreList);
foriinrange(arrLen):
a=scoreList[i]
forjinrange(arrLen):
b=scoreList[j-1]
ifb[1]<a[1]:
scoreList[i],scoreList[j-1]=scoreList[j-1],scoreList[i]
print(scoreList)
冒泡排序 也可以用自带的排序函数 scoreList.sort(key=func) func是一个自定义的函数 具体用法可以看文档
Ⅳ 用python编写程序输入10名学生的成绩,进行优、良、中、及格和不及格的统计
L=[]
y=0#优的人数
q=0#良的人数
z=0#中的人数
j=0#及格的人数
b=0#不及格的人数
foriinrange(10):
c=input("请输入第{}位学生的成绩:".format(i+1),)
L.append(c)
forainL:
ifint(a)>=90:
y+=1
elifint(a)>=80:
q+=1
elifint(a)>=70:
z+=1
elifint(a)>=60:
j+=1
else:
b+=1
print("这十名学生中得优的人数是{}人,得良的人数是{}人,得中的人数是{}人,得及格的人数是{}人,得不及格的人数是{}人".format(y,q,z,j,b))
Ⅳ Python实验题目,求助大佬
以下是代码:
all_tuple = []
sum_stu = int(input('请输入一共有多少个学生:'))
while(sum_stu>0):
a = input('请输入学生名字:')
class1 = float(input('第一门课的成绩:'))
class2 = float(input('第二门课的成绩:'))
class3 = float(input('第三门课的成绩:'))
score = class1 + class2 + class3
mid = score/3
one_tuple = (a,class1,class2,class3,mid,score)
all_tuple.append(one_tuple)
sum_stu -= 1
sorted_list = sorted(all_tuple,key=lambda x:x[5],reverse=True)
sum_stu = 1
for i in sorted_list:
print('第',sum_stu,'名',i[0],':',end='')
print('平均分:',i[4],',总分:',i[5])
sum_stu += 1
Ⅵ 如何为pygame的飞机大战增加一个分数排行榜python
import pygame
from plane_sprites import*
from Background import BackGround
from Enemy import Enemy
from Hero import Hero
from time import sleep
from Bullet import Bullet
class Plane_main(object):
def __init__(self):
print('游戏初始化')
self.screen = pygame.display.set_mode(SCREEN_RECT.size)
self.clock = pygame.time.Clock()
self.__create_sprites()
pygame.time.set_timer(CREATE_ENEMY_EVENT,1000)
pygame.time.set_timer(HERO_FIRE_EVENT, 500)
self.count = 0
self.score = 0
def __create_sprites(self):
# 背景组
self.back_group = pygame.sprite.Group()
bg1 = BackGround()
bg2 = BackGround(True)
pygame.mixer.init()
pygame.mixer.music.load("./Capo Proctions - Journey 00_00_00-00_00_59.ogg")
pygame.mixer.music.play(-1)
self.back_group.add(bg1,bg2)
# 敌机组
self.enemy_group = pygame.sprite.Group()
#敌级销毁组
self.enemy1_down_group=pygame.sprite.Group()
# 英雄组
self.hero_group = pygame.sprite.Group()
self.hero = Hero()
self.hero_group.add(self.hero)
def start_game(self):
pygame.init()
print("开始游戏...")
# pygame.mixer.init()
# pygame.mixer.music.load("./Capo Proctions - Journey 00_00_00-00_00_59.ogg")
# pygame.mixer.music.play(-1)
# gameIcon = pygame.image.load("./name.png")
# pygame.display.set_icon(gameIcon)
while True:
self.count+=1
# 1. 设置刷新帧率
self.clock.tick(10)
# 2. 事件监听
self.__event_handler()
# 3. 碰撞检测
self.__check_collide()
# 4. 更新精灵组
self.__update_sprites()
# 5. 更新屏幕显示
pygame.display.update()
def __event_handler(self):
"""事件监听"""
for event in pygame.event.get():
if event.type == pygame.QUIT:
Plane_main.__game_over()
elif event.type == CREATE_ENEMY_EVENT:
self.enemy_group.add(Enemy())
elif event.type == HERO_FIRE_EVENT:
self.hero.fire()
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT]:
print('向右移动')
self.hero.speed = 5
self.hero.speed1 = 0
elif keys[pygame.K_LEFT]:
print('向左移动')
self.hero.speed = -5
self.hero.speed1 = 0
elif keys[pygame.K_UP]:
print('向上移动')
self.hero.speed1 = -5
self.hero.speed = 0
elif keys[pygame.K_DOWN]:
print('向下移动')
self.hero.speed1= 5
self.hero.speed = 0
else:
self.hero.speed = 0
self.hero.speed1 = 0
if event.type == HERO_FIRE_EVENT:
self.hero.fire()
print('发射子弹!!!!!')
def __check_collide(self):
"""碰撞检测"""
# 1. 子弹摧毁敌机
enemy_down = pygame.sprite.groupcollide(self.enemy_group, self.hero.bullets,True, True)
enemy1_down_group.add(enemy_down)
# 2. 敌机撞毁英雄
enemies = pygame.sprite.spritecollide(self.hero, self.enemy_group, True)
# 判断列表时候有内容`
if len(enemies) > 0:
sleep(3)
# # 让英雄牺牲
self.hero.kill()
# 结束游戏
Plane_main.__game_over()
def __update_sprites(self):
self.back_group.update()
self.back_group.draw(self.screen)
self.enemy_group.update()
self.enemy_group.draw(self.screen)
self.hero_group.update()
self.hero_group.draw(self.screen)
self.hero.bullets.update()
self.hero.bullets.draw(self.screen)
self.drawText(str(self.score),SCREEN_RECT.width - 50,50)
for enemy1_down in enemy1_down_group:
self.screen.blit(enemy1_down_surface[enemy1_down.down_index],enemy1_down.rect)
if self.count % 5 ==0:
enemy1_down.down_index += 1
if enemy1_down.down_index ==3:
# pygame.mixer.music.load("./baozha.ogg")
# pygame.mixer.music.play()
self.score+=5
enemy1_down_group.remove(enemy1_down)
print(self.score)
#更新精灵组
# for group in [self.back_group, self.enemy_group, self.hero_group,self.hero.bullets]:
# group.update()
# group.draw(self.screen)
@staticmethod
def __game_over():
"""游戏结束"""
print("游戏结束")
pygame.quit()
exit()
def drawText(self,text,posx,posy,textHeight=48,fontColor=(0,0,0),backgroundColor=(111,225,1)):
fontObj = pygame.font.Font('freesansbold.ttf',textHeight)
textSurfaceObj = fontObj.render(text,13,fontColor,backgroundColor)
textRectObj = textSurfaceObj.get_rect()
textRectObj.center = (posx,posy)
self.screen.blit(textSurfaceObj,textRectObj)
#判断当前执行的文件是否是主文件
#如果不是 则if下的代码不会执行
if __name__ == '__main__':
game = Plane_main()
game.start_game()
Ⅶ python排序问题,给出一个txt文件,怎样按分数高低进行排序
把你每条数据的格式发出来看下。
不然不好弄。
其实就是通过正则表达式等方式,把分数提取出来,然后排序就行了。
给你两个函数,你自己组合吧
#构建一个列表,filename是你txt文件的路径,构建的列表,按照分数进行排序并返回,参数reverse为False则为升序,为True则为降序
def build_list(filename):
import re
reslist = []
fp = open(filename)
textlist = fp.readlines()
fp.close()
pattern = re.compile("(\\d*)\\.\\s*(\\d*\\.\\d*)\\s*([\\s\\S]*(?=\\(\\d*\\)))\\((\\d*)\\)\\s*([\\w,]*)")
for text in textlist:
pr = pattern.search(text)
if pr:
reslist.append((pr.group(1),pr.group(2),pr.group(3),pr.group(4),pr.group(5)))
reslist.sort(key = lambda x:float(x[1]))
return reslist
#根据输入的year参数,返回year年度的电影资料的列表,year为字符串,movielist为使用上面的build_list函数生成的列表
def list_movie_by_year(movielist,year):
return [x for x in movielist if x[3] == year]
如,你数据的路径为d:\data.txt
则
sorted_list = build_list('d:/data.txt')
想找1993年的数据,
则调用函数
list_movie_by_year(sorted_list,'1993')
Ⅷ python可以实现对中小学期末成绩排名,分析吗
#-*-coding:utf-8-*-
#杨鑫
L=[('Bob',75),('Adam',92),('Bart',66),('Lisa',88)]
#按照姓名排序
defby_name(t):
returnt[0].lower()
#按照分数排序
defby_score(t):
return-t[1]
L2=sorted(L,key=by_name)
L3=sorted(L,key=by_score)
print("按照姓名排序后的结果:")
print(L2)
print("按照分数排序后的结果:")
print(L3)
结果: