心灵感应魔法 python

该文描述了一个利用整数二进制表示制作特殊表格的过程,用户心理默念1到31之间的数字,通过查看对应表格的特定位置来猜测数字。给定一个1到63的整数,程序会生成相应的表格。代码实现了这一逻辑,将二进制位为1的索引位置的数字填入表格中。
摘要由CSDN通过智能技术生成

下图5张表,你从心理默念一个[1,31]以内的数,然后告诉我它在第几张表中,我能通过心灵感应知道你心中的那个数字是什么?

它其实是利用了整数的二进制表示方法,例如11的二进行为(1011),即11=8+4+1,而11在表1、2、4中均出现,因此,只需将表1、2、4中的第一个数字相加即为要猜的数字。

现在请你根据输入的数据,编程制作出这些魔法表格。

输入格式:

输入一个取值范围在1-63(含1和63)整数n。

输出格式:

输出n内对应的魔法表格:
先输出第几个魔法数组(从1开始编号 )
每4个一行,每个元素所占宽度为5
为简化输出格式,本题格式错误不扣分

输入样例:

14

输出样例:

第1个魔法数组
    1    3    5    7
    9   11   13

第2个魔法数组
     2    3    6    7
   10   11   14

第3个魔法数组
    4    5    6    7
   12   13   14

第4个魔法数组
    8    9   10   11
   12   13   14 
	 

 代码实现:

nums=int(input())
lis=[ [ ] for i in range(10) ]
for i in range(1, nums+1):
    l_i=str(bin(i))
    for j, k in zip(l_i[ ::-1 ][ :-2 ], range(1000)):
        # print(j,k,i)
        if j == "1":
            lis[ k ].append(i)
# print(lis)
times=1
for i in lis:
    if i:
        zhi=1
        print() if times != 1 else None
        print(f"第{times}个魔法数组")
        for j in i:
            print("{:>5}".format(j), end="")
            zhi+=1
            if zhi > 4:
                print()
                zhi=1
        times+=1
        print()
    else:
        break

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值