鱼C论坛

 找回密码
 立即注册
查看: 1592|回复: 1

[已解决]可否有大神教教这题

[复制链接]
发表于 2020-12-1 20:14:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是一个流行的彩票。人们可以从1到30之间随机选择7个不同的数字。中奖号码将开放给公众,直到到期日期。匹配7个号码、6个号码和(>=)4个号码以上的人将分别获得3个类别的奖品。忽略数字的顺序。每个人只能有一个赌注。
给你一本字典,里面有买家的名字、他们的彩票号码和中奖号码,请详细说明他们能得到的奖金。
    例如:
  people ={
'Hermione':(7, 6, 5, 4, 3, 2, 1),
'Harry':(7, 2, 8, 3, 10, 6, 1),
'Ron' : (11, 2, 4, 22, 8, 16, 15),
'Voldemort' : (17, 4, 24, 14, 25, 3, 29),
'Dumbledore' : (1, 2, 3, 4, 14, 6, 30)}
winning_number = (1,2,3,4,5,6,7)


winprize(people, winning_number) == {'first_prize': {'Hermione'}, 'third_prize': {'Dumbledore', 'Harry'}}
(注意return dictionary的值已经设置。可以调用defaultdict来构造一个默认空集的字典)


       def winprize(people, winning_number):
最佳答案
2020-12-1 20:44:54
def winprize(people, winning_number):
    result = {'first_prize':[],'second_prize':[],'third_prize':[]}
    for each in people:
        i = 0
        for number in winning_number:
            if number in people[each]:
                i += 1
        if i == 7:
            result['first_prize'].append(each)
        elif i == 6:
            result['second_prize'].append(each)
        elif i == 5:
            result['third_prize'].append(each)
    result2 = result.copy()
    for each in result2:
        if result2[each] == []:
            del result[each]
    return result

people ={
'Hermione':(7, 6, 5, 4, 3, 2, 1),
'Harry':(7, 2, 8, 3, 10, 6, 1),
'Ron':(11, 2, 4, 22, 8, 16, 15),
'Voldemort':(17, 4, 24, 14, 25, 3, 29),
'Dumbledore':(1, 2, 3, 4, 14, 6, 30)}
winning_number = (1,2,3,4,5,6,7)
result = winprize(people,winning_number)
print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-1 20:44:54 | 显示全部楼层    本楼为最佳答案   
def winprize(people, winning_number):
    result = {'first_prize':[],'second_prize':[],'third_prize':[]}
    for each in people:
        i = 0
        for number in winning_number:
            if number in people[each]:
                i += 1
        if i == 7:
            result['first_prize'].append(each)
        elif i == 6:
            result['second_prize'].append(each)
        elif i == 5:
            result['third_prize'].append(each)
    result2 = result.copy()
    for each in result2:
        if result2[each] == []:
            del result[each]
    return result

people ={
'Hermione':(7, 6, 5, 4, 3, 2, 1),
'Harry':(7, 2, 8, 3, 10, 6, 1),
'Ron':(11, 2, 4, 22, 8, 16, 15),
'Voldemort':(17, 4, 24, 14, 25, 3, 29),
'Dumbledore':(1, 2, 3, 4, 14, 6, 30)}
winning_number = (1,2,3,4,5,6,7)
result = winprize(people,winning_number)
print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 05:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表