python小问题求解
设计一个学生类(姓名,语文成绩,数学成绩, 班级),方法:初始化(成绩默认0);查询各科成绩;统计每个学生的平均分;按平均分进行排序;
构造学生对象,
功能:
学生可以根据自己的姓名,查询自己成绩及排名情况;
对于有加分项的学生,可以在平均分的基础上加(1~5)分。 虽然题意有点模糊,我按自己的理解写了,基本可以实现各个方法和功能。
代码如下:
class Student:
global records
records = {}
def __init__(self, name='某同学', yuwen=0, math=0, classNo='未分班'):
self.name = name
self.yuwen = yuwen
self.math = math
self.classNo = classNo
self.records = records
records =
def lookup(self, name):
if name in records:
yw = records
mt = records
return '{} 的各科成绩为:\n语文:{}\n数学:{}'.format(name, yw, mt)
else:
return '------查无此同学。'
def avg_sc(self, name):
if name in records:
avg = (records + records)/2
return avg
else:
return '------查无此同学。'
def ranking(self):
name_list = list(records.keys()) # 必须加list转化(因为dict.keys()返回的是dict_keys对象不能用下标)
avg_list = ) for i in range(len(records))]
n_a = dict(zip(name_list, avg_list))
# 按平均分排序(即按字典的values逆序排)
rk = sorted(n_a.items(), key=lambda kv:(kv, kv), reverse=True)
rk = [ list(t) for t in rk]
for r in rk:
r.insert(0, rk.index(r)+1) # 插入排名(从1开始)
return rk
if __name__ == '__main__':
stu = Student('张三', 90, 100, '一班')
stu.records['李四'] =
stu.records['王五'] =
print(stu.records)
print(stu.lookup('张三'))
print(stu.lookup('李四'))
print('%s 的平均分为:%.2f' % ('李四', stu.avg_sc('李四')))
print(stu.lookup('Alice'))
print('\n按平均分排名:')
for r in stu.ranking():
print(r) 是用Python实现的 本帖最后由 小海灵 于 2020-11-2 17:10 编辑
class Student:
def __init__(self , name , age , gender , phone , address , email):
self.name = name
self.age = age
self.gender = gender
self.phone = phone
self.address = address
self.email = email
def all(self):
print(self.name,self.age ,self.gender,self.phone,self.address,self.email)
contacts =[Student('tom', '18' , '男' , '12345678' , '市中心' , '123@.com'),
Student('jack', '20', '男', '4008208820', '城郊', '456@.com'),
Student('mary', '20', '女', '8848520', '城中村', '789@.com'),
Student('jerry' , '19' , '女' , '11235813' , 'xx小区' , '110@q.com')]
def find_by_name(name):
for x incontacts:
if name == x.name:
x.all()
return
print('查无此人')
def find_by_address(address):
for x in contacts:
if address == x.address:
x.all()
return
print('查无此人')
def find_by_email(email):
for x in contacts:
if email == x.email:
x.all()
return
print('查无此人')
x = input('请输入查找方式(英文):')
y = input('请输入关键字(变量):')
if x == 'name':
find_by_name(y)
elif x == 'address':
find_by_address(y)
elif x == 'email':
find_by_email(y)
else:
print('输入有误,无法查询')
以前写过类似的,我觉得实现出来差不多,你可以参考参考 这题目要求不完整吧,有点语焉不详 这题目太范了不好回答 要回答完整那么就是一个完整的系统了 阿奇_o 发表于 2020-11-2 22:55
虽然题意有点模糊,我按自己的理解写了,基本可以实现各个方法和功能。
代码如下:
我想问一下,那个加分项怎么弄,就是如果有加分项的话,就平均分加上几分再进行排序(自己定义某个学生有没有加分项) 段段努力秃头 发表于 2020-11-2 23:21
我想问一下,那个加分项怎么弄,就是如果有加分项的话,就平均分加上几分再进行排序(自己定义某个学生有 ...
可以在构造函数(初始化)时,
加多一个参数表示加分项即可,
如 def __init__(self, name='某同学', yuwen=0, math=0, classNo='未分班', jf=0): ....
然后在后面定义一个判断是否加分和实现加分的函数即可。
页:
[1]