Python计算歌手得分数案例

本文通过三个版本的Python代码,从原版到进阶版,逐步解决计算歌手得分时可能出现的错误,确保评分准确无误,并能处理多人得分情况。鼓励读者实践并探讨可能的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向对象的歌手大赛评分系统通常会包含选手、评委、比赛项目、得分计算等多个类。这里提供一个简单的Python代码示例: ```python class Singer: def __init__(self, name): self.name = name self.skills = [] def add_skill(self, skill_name, score): self.skills.append({'name': skill_name, 'score': score}) class Judge: def __init__(self, name): self.name = name self.ratings = {} def rate_singer(self, singer, skill): if skill not in self.ratings: self.ratings[skill] = [] self.ratings[skill].append(singer.skills.get(skill, 0)) class SingingCompetition: def __init__(self): self.judges = [] self.singers = [] self.project_scores = {'voice': 0.4, 'performance': 0.3, 'originality': 0.3} def add_judge(self, judge): self.judges.append(judge) def add_singer(self, singer): self.singers.append(singer) def calculate_score(self, singer_name, skill): singer = next((s for s in self.singers if s.name == singer_name), None) return sum(rating * self.project_scores[skill] for judge in self.judges for rating in judge.ratings.get(skill, [0])) / len(self.judges) # 示例用法 judge1 = Judge('Judge A') judge2 = Judge('Judge B') singer1 = Singer('Singer X') singer1.add_skill('voice', 90) singer1.add_skill('performance', 85) singer1.add_skill('originality', 75) competition = SingingCompetition() competition.add_judge(judge1) competition.add_judge(judge2) competition.add_singer(singer1) total_voice_score = competition.calculate_score('Singer X', 'voice') print(f"Total Voice Score: {total_voice_score}") ``` 这个例子中,`Singer` 类表示参赛者,包含姓名和技能;`Judge` 类代表评委,记录对每个技能的评级;`SingingCompetition` 类则是比赛的核心,负责管理评委、选手,并计算终得分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值