二进制读心术

381 阅读2分钟

缘起:

上计算机导论课的时候,老师给我们讲了一个读心术的魔术。大致的玩法和原理可以自行在百度上查找一下,不算很难。我突发奇想,可不可以自己做一个生成读心术卡片的程序呢?知道原理就不难,马上动手。

java遇难

我本身是主攻Java的,所以第一想法肯定是用java做,但是实际上手就发现不简单。首先是Java的类型转换比较严格,还有就是切分字符串不好循环,还有嵌套循环的话java语句很多,写起来不顺手。

python惊喜

突然想到之前写一些小工具时发觉python的简洁,于是转念去用python写,经过半小时的编写(主要是python有点久没用好多语法都生疏了混淆了),就写出了不太简洁的第一版,但足矣。

list1=[]
list2=[]
list3=[]
list4=[]
list5=[]


for a in range(0,32):
    b=bin(a)
    i=0
    #把bin()函数产生的多余字符去掉
    b=b[2:]
    #把字符填充到五位,以0补足
    b=b.zfill(5)
    print("当前数字: %d" % a)
    print("二进制表示:"+b)
    for letter in str(b):
        i+=1
        if (int(letter)==1):
            print(i)
            if i==1:
                list1.append(a)
            elif i==2:
                list2.append(a)
            elif i==3:
                list3.append(a)
            elif i==4:
                list4.append(a)
            elif i==5:
                list5.append(a)
            else:
                print("超过31了")
    print("")
print("第1张卡片:")
print(list1)
print("第2张卡片:")
print(list2)
print("第3张卡片:")
print(list3)
print("第4张卡片:")
print(list4)
print("第5张卡片:")
print(list5)

总结

我很清楚代码多么不简洁多么不美观,但总归是自己写出来了,以后有机会(大概率不会有)再迭代一下吧。最近学校事情好多,好忙,高数作业还没写呢,文章就只能隔三岔五更新了。