Python基础54题第19题

通过在5组数里选择有没有你生日所在的那一天,然后就猜出你的生日是几号。

为什么刚好是5个问题,原来一个月最多31天,5个问题回答是和否最多2^5=32种情况。

这5组数据是根据下面规律写出的:

第1组16个数表示的就是二进制第五位是1的数字(10000)

第2组16个数表示的就是二进制第四位是1的数字(01000)

第3组16个数表示的就是二进制第三位是1的数字(00100)

第4组16个数表示的就是二进制第二位是1的数字(00010)

第5组16个数表示的就是二进制最低位是1的数字(00001)

如果第一组有,就+16

如果第二组有,就+8

如果第三组有,就+4

如果第四组有,就+2

如果第五组有,就+1

累计的结果就是你的出生日。

本题Python代码如下:

set1 = "1\t3\t5\t7\n" \
       "9\t11\t13\t15\n" \
       "17\t19\t21\t23\n" \
       "25\t27\t29\t31\n"
set2 = "2\t3\t6\t7\n" \
       "10\t11\t14\t15\n" \
       "18\t19\t22\t23\n" \
       "26\t27\t30\t31\n"
set3 = "4\t5\t6\t7\n" \
       "12\t13\t14\t15\n" \
       "20\t21\t22\t23\n" \
       "28\t29\t30\t31\n"
set4 = "8\t9\t10\t11\n" \
       "12\t13\t14\t15\n" \
       "24\t25\t26\t27\n" \
       "28\t29\t30\t31\n"
set5 = "16\t17\t18\t19\n" \
       "20\t21\t22\t23\n" \
       "24\t25\t26\t27\n" \
       "28\t29\t30\t31\n"

day = 0
print(set1)
chioce =input("您的生日生日是否在set1中,在输入y, 不在输入n :" )
if chioce == "y" :
	day += 1
	
print(set2)
chioce =input("您的生日生日是否在set2中  : 在输入y, 不在输入n" )
if chioce == "y" :
	day += 2
	
print(set3)
chioce =input("您的生日生日是否在set3中  : 在输入y, 不在输入n" )
if chioce == "y" :
	day += 4
	
print(set4)
chioce =input("您的生日生日是否在set4中  : 在输入y, 不在输入n" )
if chioce == "y" :
	day += 8
	
print(set5)
chioce =input("您的生日生日是否在set5中  : 在输入y, 不在输入n" )
if chioce == "y" :
	day += 16
	
print("您的生日为 :%s " %(day))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值