如何编写代码实现关联候选人姓名与票数列表的处理:找出最高得票候选人并处理多人平局需重新投票的情况
实现候选人得票统计与平局处理的Python方案
没问题,我来帮你搞定这个需求!咱们可以用Python轻松实现这个功能,下面是完整的代码示例,我会一步步给你解释逻辑:
# 定义候选人姓名和对应的票数 candidate_names = ['ed','dan','ollie','poppy'] votes = [10,13,8,3] # 第一步:把候选人和票数配对,方便后续同步处理 paired_data = list(zip(candidate_names, votes)) # 第二步:找出本次投票的最高得票数 max_votes = max(votes) # 第三步:筛选出所有获得最高票数的候选人 top_candidates = [item for item in paired_data if item[1] == max_votes] # 第四步:根据最高票人数判断输出结果 if len(top_candidates) == 1: winner_name, winner_votes = top_candidates[0] print(f"得票最高的候选人是{winner_name},票数为{winner_votes}票") elif 2 <= len(top_candidates) <= 4: # 提取所有平局候选人的姓名,用逗号分隔展示 tie_names = ", ".join([name for name, _ in top_candidates]) print(f"出现平局!候选人{tie_names}均获得最高票数{max_votes}票,请重新投票。")
代码逻辑拆解:
- 配对数据:用
zip()函数把姓名列表和票数列表一一对应打包成元组,这样我们可以同时获取每个候选人的姓名和票数,避免单独操作两个列表时出现对应关系错乱的问题。 - 获取最高票数:直接用
max()函数从票数列表里拿到最高值,简单高效。 - 筛选最高票候选人:用列表推导式遍历配对后的元组,把所有票数等于最高票的候选人筛选出来,得到一个包含所有最高票候选人的列表。
- 判断输出:
- 如果最高票候选人只有1位,就直接输出获胜者的姓名和票数;
- 如果人数在2到4之间(刚好覆盖题目要求的平局范围),就把所有平局候选人列出来,提示重新投票。
测试不同场景:
比如如果把票数改成[13,13,8,3],代码会输出出现平局!候选人ed, dan均获得最高票数13票,请重新投票。;如果票数是[15,15,15,3],也会正确提示三位候选人平局的情况。
内容的提问来源于stack exchange,提问作者Duck.Jpeg
相关产品推荐
相关产品推荐

