鱼C论坛

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

[已解决]Python 么循环解决后给鱼币

[复制链接]
发表于 2018-9-23 11:17:09 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 10 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-25 13:18:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 pyhero 于 2018-9-25 13:22 编辑
  1. answers = dict()
  2. persons = ['A', 'B', 'C', 'D']

  3. # get answers
  4. for person in persons:
  5.     print('Ask {}'.format(person))
  6.     answer = dict()
  7.     total = {'0': 0, '1': 0, '2': 0}
  8.     for p in [x for x in persons if x != person]:
  9.         value = input('Is {} the prisoners? 0: No, 1: Yes, 2 Unknown: '.format(p))
  10.         while value not in ['0', '1', '2']:
  11.             value = input('Bad input, chose from: 0: No, 1: Yes, 2 Unknown: ')

  12.         total[value] += 1
  13.         answer[p] = int(value)

  14.     mapping = {'是凶手票数': total['1'], '不是凶手票数': total['0'], '不知道票数': total['2']}
  15.     answers[person] = [mapping, answer]

  16. # judge prisoners
  17. for k, v in answers.items():
  18.     print('{}: {}, 投票情况: {}'.format(k, v[0], v[1]))

  19. result = sorted(answers.items(), key=lambda x: x[1][0]['是凶手票数'])[-1][0]
  20. print('凶手是{}'.format(result))
复制代码


执行过程:
  1. Ask A
  2. Is B the prisoners? 0: No, 1: Yes, 2 Unknown: 1
  3. Is C the prisoners? 0: No, 1: Yes, 2 Unknown: 1
  4. Is D the prisoners? 0: No, 1: Yes, 2 Unknown: 1
  5. Ask B
  6. Is A the prisoners? 0: No, 1: Yes, 2 Unknown: 2
  7. Is C the prisoners? 0: No, 1: Yes, 2 Unknown: 1
  8. Is D the prisoners? 0: No, 1: Yes, 2 Unknown: 1
  9. Ask C
  10. Is A the prisoners? 0: No, 1: Yes, 2 Unknown: 2
  11. Is B the prisoners? 0: No, 1: Yes, 2 Unknown: 1
  12. Is D the prisoners? 0: No, 1: Yes, 2 Unknown: 2
  13. Ask D
  14. Is A the prisoners? 0: No, 1: Yes, 2 Unknown: 1
  15. Is B the prisoners? 0: No, 1: Yes, 2 Unknown: 1
  16. Is C the prisoners? 0: No, 1: Yes, 2 Unknown: 1
  17. A: {'是凶手票数': 3, '不是凶手票数': 0, '不知道票数': 0}, 投票情况: {'B': 1, 'C': 1, 'D': 1}
  18. B: {'是凶手票数': 2, '不是凶手票数': 0, '不知道票数': 1}, 投票情况: {'A': 2, 'C': 1, 'D': 1}
  19. C: {'是凶手票数': 1, '不是凶手票数': 0, '不知道票数': 2}, 投票情况: {'A': 2, 'B': 1, 'D': 2}
  20. D: {'是凶手票数': 3, '不是凶手票数': 0, '不知道票数': 0}, 投票情况: {'A': 1, 'B': 1, 'C': 1}
  21. 凶手是D
复制代码



不足:如果有票数相同的,会只打印最后一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 15:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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