华为OD机试真题-开源项目热榜-2023年OD统一考试(C卷)---python免费

题目:
在这里插入图片描述

考察内容:
理解题目+双排序

代码:

"""
题目分析:
计算热度值,进行降序排序,热度值一样,字母小写,字典排序

输入:
项目个数N, int 0-100
权重列表,6个int  0-50
项目的统计维度:
输出:开源项目

例子:
5
5 6 6 1 2
camila 13 88 46 26 169
grace 64 38 87 23 103
lucas 91 79 98 154 79
leo 29 27 36 43 178
ava 29 27 36 43 178
lucas
grace
camila
ava
leo

思路:
计算热度并进行双排序
"""
N = int(input())
w1, w2, w3, w4, w5 = map(int, input().split())
temp_list = list()

for _ in range(N):
    # 输入项目名字以及该项目各个维度的统计值
    name, a1, a2, a3, a4, a5 = input().split()
    # 根据公式计算结果
    total = w1 * int(a1) + w2 * int(a2) + w3 * int(a3) + w4 * int(a4) + w5 * int(a5)
    temp_list.append([name, total])
# 排序, 先total降序;再name小写升序
temp_list.sort(key=lambda x: (-x[1], x[0].lower()))

# 逐行输出
for name, total in temp_list:
    print(name)

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为OD机试真题要求使用Python实现分班功能,下面我将简要说明实现的思路。 首先我们需要读取输入的学生信息,包括姓名和成绩。可以使用Python的输入函数`input()`来实现,要求输入的学生信息按照一定格式排列,例如每行一个学生信息,姓名和成绩之间使用空格分隔。 我们可以定义一个空的字典来存储学生信息,姓名作为key,成绩作为value。我们可以使用Python的字典数据类型来实现,`student_dict = {}`。 然后,我们可以根据成绩对学生进行排序,可以使用Python的内置函数`sorted()`对字典的value进行排序,注意我们需要通过`student_dict.items()`将字典转换为可排序的列表。 接着我们需要根据排序后的学生列表来分班,根据题目要求,每班的人数是相同的,假设为n。有两种常见的分班方式: 1. 按照学生的顺序,依次将学生分到不同的班级,当分到第n个学生时,再将学生分到下一个班级。可以使用取余运算符`%`来实现这个过程。 2. 先将学生按照成绩分组,成绩相同的学生放在一起,然后再将每组学生按照上述方式分到不同的班级。 最后,我们需要输出分班结果,可以使用Python的格式化输出语句将学生信息打印出来,例如`print("班级1: " + str(class1))`。 以上是我对华为OD机试真题的大致思路,具体的代码实现需要考虑一些细节问题,并根据实际的需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值