鱼C论坛

 找回密码
 立即注册
查看: 1239|回复: 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
  1. def winprize(people, winning_number):
  2.     result = {'first_prize':[],'second_prize':[],'third_prize':[]}
  3.     for each in people:
  4.         i = 0
  5.         for number in winning_number:
  6.             if number in people[each]:
  7.                 i += 1
  8.         if i == 7:
  9.             result['first_prize'].append(each)
  10.         elif i == 6:
  11.             result['second_prize'].append(each)
  12.         elif i == 5:
  13.             result['third_prize'].append(each)
  14.     result2 = result.copy()
  15.     for each in result2:
  16.         if result2[each] == []:
  17.             del result[each]
  18.     return result

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

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 14:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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