免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2419 | 回复: 4
打印 上一主题 下一主题

一个有点意思的猜生日游戏 娱乐下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-10 11:58 |只看该作者 |倒序浏览
python版块比较冷清,所以就发点好玩的上来。一个猜生日的游戏,你随便想一个1~31之间的数字,通过回答5次 Yes或者No,就能猜出你想的数字。看代码
  1. #coding=utf-8
  2. import os
  3. date=0
  4. def formt_print(data):
  5.     tmp=[]
  6.     for index,val in enumerate(data):
  7.         if (index+1)%4==0:
  8.             tmp.append(str(val).rjust(2," ")+"\n")
  9.         else:
  10.             tmp.append(str(val).rjust(2," ")+"  ")
  11.     return "".join(tmp)


  12. def print_choice(data,step):
  13.     global date
  14.     print("Is your birth in this set?")
  15.     print(formt_print(data))
  16.     choice=raw_input("Enter N for No and Y for Yes:")
  17.     if choice.upper()=='Y':
  18.         date=date+step
  19.     if os.name=='nt':
  20.         os.system('cls')
  21.     else:
  22.         os.system('clear')

  23. def main():
  24.     set1=range(16,32)
  25.     set2=range(8,16)+range(24,32)
  26.     set3=range(1,33,2)
  27.     set4=[2,3,6,7,10,11,14,15,18,19,22,23,26,27,30,31]
  28.     set5=range(4,8)+range(12,16)+range(20,24)+range(28,32)
  29.     print_choice(set1,16)
  30.     print_choice(set2,8)
  31.     print_choice(set3,1)
  32.     print_choice(set4,2)
  33.     print_choice(set5,4)
  34.     print "Your birth is %s"%date
  35.    

  36. if __name__=='__main__':
  37.     main()
复制代码
PS:里面其实有点数学的东西在哪里,大家可以小小研究下,哈!

论坛徽章:
0
2 [报告]
发表于 2011-02-10 13:37 |只看该作者
好玩

论坛徽章:
0
3 [报告]
发表于 2011-02-11 08:15 |只看该作者
有点意思,记得有人用这法子搞神秘游戏。

论坛徽章:
0
4 [报告]
发表于 2011-02-18 15:48 |只看该作者
2的5次方是32
2进制
32>31

好了,既然都是玩神秘的,我的解释也神秘一点。

论坛徽章:
0
5 [报告]
发表于 2011-02-18 16:18 |只看该作者
回复 1# 阳光boyer


    31个数,5次,二分查找足够了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP