2022 3.7
凌晨的时候发了第一个python版的Boh,blog链接,出于菜鸡的纪念心理,后续的更新放在这里。
—————————————————————————————————————
3.7第一版代码见原文
—————————————————————————————————————
3.13 更新
这次的版本主要是完成了颜色的设置,还有运用函数优化了一些代码,简化了程序
这次的最大的改进也是问题就是字体颜色,一开始查阅文章得到的方法有两种:
1、利用print本身的功能
2、装在专用函数库
第一种方法看起来简单易行,虽然看到了第二种方法丰富的色彩,菜鸡还是毅然偷懒,选择了第一种方法,但是事情没有想象的那么简单。
第一次按照别人的代码操作结果是这样的:
没错根本没有效果而且还有一些奇怪的符号(一开始以为是乱码,后来经过师兄指点和菜鸡冷静的思考之后,发现只是\033对应的就是方框这个问题)经过多次尝试结果都一样,在确认语法没有问题之后菜鸡陷入了沉思(摆烂)。
略去过程,最终问题得到了解决(就是问师兄,问百度,问城市大脑),找到了一篇遇到了和我一样问题的文章(博主真是好心人):链接
总结一下,还是库的问题,倒不一定要用utf8的编码,只要装载了colorama,这个print的功能就可以正常使用。
讲colorama的一篇blog
接下来是一些经验总结。
关于print的格式化输出,就像C语言里面的printf,最值得注意的是python的数据类型问题。一开始尝试用%d,%o,%h(没有找到%b,经过尝试也产生报错),但是这些转换说明(这个概念应该也适用于这里的python)都发生了str型的报错,于是干脆全部都用%s,完全没有问题,输出的时候还是会有0x,0b,0o的标志,而且不用写四个函数(最后把不报错的int也改成str了,真香)。
没错,既然学会了一个新花样,那就要好好玩一会,这么一大坨代码还是为了开头的逼格(也就是没什么卵用,除了可以藏一下作者的id,但是也只是说明作者是个不会做水印的菜鸡)。
最后看看优化过的界面:
看起来应该好了不少,但是刚刚又发现一个问题:
是的…控制台模式下出现部分乱码(但是上面的部分没有问题),这个bug还得接着修…
—————————————————————————————————————
6.23更新
其实这次更新没啥有用的内容,主要就是证明菜鸡虽烂但是没有摆。经过一下午的研究(试错,撞墙,发呆),至少搞明白了为啥会出先上次那个bug,其实也挺好理解,就是那个格式仅适用于输出,input的字符不算严格意义的输出,所以会乱码,但是目前还没有找到解决办法,只好先删了,晚上再想 /手动狗头
—————————————————————————————————————
最新代码全部:
#functions and databases
from colorama import init
init(autoreset = True)
_break = "\t------"
def _b(_num):
print(_break * _num)
def boh_blue(_targ):
print("\033[1;34m%s\033[0m" % _targ)
#初始画面的设置
print()
print()
print()
print(" \033[1;30m10011001010000100001000100000100001000\033[0m")
print(" \033[1;30m110\033[0m0100100\033[1;30m101000\033[0m101000\033[1;30m00101\033[0m10\033[1;30m0011\033[0m01\033[1;30m001\033[0m")
print(" \033[1;30m001\033[0m11\033[1;30m1100\033[0m01\033[1;30m0010\033[0m10\033[1;30m1100\033[0m11\033[1;30m1001\033[0m10\033[1;30m0001\033[0m11\033[1;30m011\033[0m")
print(" \033[1;30m000\033[0m10\033[1;30m0000\033[0m11\033[1;30m1110\033[0m110\033[1;30m000\033[0m10\033[1;30m1111\033[0m11\033[1;30m1001\033[0m01\033[1;30m111\033[0m")
print(" \033[1;30m110\033[0m0001100\033[1;30m11001\033[0m01\033[1;30m0\033[0m0\033[1;30m11\033[0m00\033[1;30m1101\033[0m10001101\033[1;30m101\033[0m")
print(" \033[1;30m111\033[0m1111011\033[1;30m01100\033[0m10\033[1;30m01\033[0m1\033[1;30m0\033[0m00\033[1;30m1111\033[0m00101001\033[1;30m111\033[0m")
print(" \033[1;30m110\033[0m01\033[1;30m0000\033[0m11\033[1;30m0010\033[0m11\033[1;30m010\033[0m011\033[1;30m1110\033[0m01\033[1;30m1110\033[0m00\033[1;30m111\033[0m")
print(" \033[1;30m110\033[0m10\033[1;30m1000\033[0m01\033[1;30m0011\033[0m00\033[1;30m0110\033[0m00\033[1;30m1110\033[0m01\033[1;30m1111\033[0m10\033[1;30m010\033[0m")
print(" \033[1;30m101\033[0m1000001\033[1;30m101101\033[0m001101\033[1;30m11001\033[0m00\033[1;30m1011\033[0m10\033[1;30m110\033[0m")
print(" \033[1;30m10001001111100100001000100000FERRERO01\033[0m")
print()
_b(4)
print("Program for conversation of number system. Boh is ready.")
_b(4)
print("TIPS")
print("\033[1;30m>>>\033[0mV to view history data.")
print()
'''
类似于宏的设置区域
'''
#file
fstream1 = open("d:\python_projects\CONS\data.txt", mode = "w")
#variables
judge_op = 'y'
o_ption1 = None
o_ption2 = None
num = None
'''
main()
'''
_b(4)
print("INPUT MODE(decimalism default): \033[1;30mB/b:Bin O/o:Oct H/h:Hex\033[0m")
o_ption1 = input(">>>Choose the mode:")
#o_ption1 = input("\033[1;30m>>>\033[0mChoose the mode:")
#print("\033[1;30m>>>\033[0mChoose the mode:")
print()
print("OUTPUT MODE(decimalism default): \033[1;30mB/b:Bin O/o:Oct H/h:Hex\033[0m")
o_ption2 = input(">>>Choose the mode:")
print()
#store the data
print("option1:", file = fstream1)
print(o_ption1, file = fstream1)
print("option2:", file = fstream1)
print(o_ption1, file = fstream1)
#judge the mode
while judge_op == 'y':
if len(o_ption1) == 0:
print("INPUT")
num = int(input("\033[1;30m>>>\033[0mInput the number:"))
if len(o_ption2) == 0:
num = num
boh_blue(num)
if o_ption2 == 'b' or o_ption2 == 'B':
num = bin(num)
print("\033[1;30m__1...5...9...13..17..21..25..29..33..\033[0m")
boh_blue(num)
if o_ption2 == 'o' or o_ption2 == 'O':
num = oct(num)
boh_blue(num)
if o_ption2 == 'h' or o_ption2 == 'O':
num = hex(num)
boh_blue(num)
if o_ption1 == 'b' or o_ption1 == 'B':
print("INPUT")
print(" 1...5...9...13..17..21..25..29..33..")
num = input("\033[1;30m>>>\033[0mInput the number:")
#transfer into bin
numsum = 0
numsum = int(numsum)
numing = list(num)
#print(numing)
numlen = len(num)
#print(numlen)
_index = 0
_index = int(_index)
while int(_index) < numlen:
numsum = int(numsum) + int(num[int(numlen)- 1 - _index]) * (2 ** _index)
_index = int(_index) + 1
#print(numsum)
num = numsum
if o_ption2 == 'b' or o_ption2 == 'B':
num = bin(num)
print("\033[1;30m__1...5...9...13..17..21..25..29..33..\033[0m")
boh_blue(num)
if o_ption2 == 'o' or o_ption2 == 'O':
num = oct(num)
boh_blue(num)
if len(o_ption2) == 0:
num = int(num)
boh_blue(num)
if o_ption2 == 'h' or o_ption2 == 'O':
num = hex(num)
boh_blue(num)
if o_ption1 == 'o' or o_ption1 == 'O':
print("INPUT")
num = input("\033[1;30m>>>\033[0mInput the number:")
#transfer into oct
numsum = 0
numsum = int(numsum)
numing = list(num)
#print(numing)
numlen = len(num)
#print(numlen)
_index = 0
_index = int(_index)
while int(_index) < numlen:
numsum = int(numsum) + int(num[numlen - 1 - _index]) * (8 ** _index)
_index = int(_index) + 1
#print(numsum)
num = numsum
if o_ption2 == 'b' or o_ption2 == 'B':
num = bin(num)
print("\033[1;30m__1...5...9...13..17..21..25..29..33..\033[0m")
boh_blue(num)
if o_ption2 == 'o' or o_ption2 == 'O':
num = oct(num)
boh_blue(num)
if len(o_ption2) == 0:
num = int(num)
boh_blue(num)
if o_ption2 == 'h' or o_ption2 == 'O':
num = hex(num)
boh_blue(num)
if o_ption1 == 'h' or o_ption1 == 'H':
print("INPUT")
num = input("\033[1;30m>>>\033[0mInput the number:")
#transfer into hex
numsum = 0
numsum = int(numsum)
numing = list(num)
#print(numing)
numlen = len(num)
#print(numlen)
_index = 0
_index = int(_index)
while int(_index) < numlen:
if num[numlen - 1 - _index] == 'a' or num[numlen - 1 - _index] == 'A':
numsum = int(numsum) + 10 * (16 ** _index)
if num[numlen - 1 - _index] == 'b' or num[numlen - 1 - _index] == 'B':
numsum = int(numsum) + 11 * (16 ** _index)
if num[numlen - 1 - _index] == 'c' or num[numlen - 1 - _index] == 'C':
numsum = int(numsum) + 12 * (16 ** _index)
if num[numlen - 1 - _index] == 'd' or num[numlen - 1 - _index] == 'D':
numsum = int(numsum) + 13 * (16 ** _index)
if num[numlen - 1 - _index] == 'e' or num[numlen - 1 - _index] == 'E':
numsum = int(numsum) + 14 * (16 ** _index)
if num[numlen - 1 - _index] == 'f' or num[numlen - 1 - _index] == 'F':
numsum = int(numsum) + 15 * (16 ** _index)
if num[numlen - 1 - _index] == '0':
numsum = int(numsum) + int(num[numlen - 1 - _index]) * (16 ** _index)
if num[numlen - 1 - _index] == '1':
numsum = int(numsum) + int(num[numlen - 1 - _index]) * (16 ** _index)
if num[numlen - 1 - _index] == '2':
numsum = int(numsum) + int(num[numlen - 1 - _index]) * (16 ** _index)
if num[numlen - 1 - _index] == '3':
numsum = int(numsum) + int(num[numlen - 1 - _index]) * (16 ** _index)
if num[numlen - 1 - _index] == '4':
numsum = int(numsum) + int(num[numlen - 1 - _index]) * (16 ** _index)
if num[numlen - 1 - _index] == '5':
numsum = int(numsum) + int(num[numlen - 1 - _index]) * (16 ** _index)
if num[numlen - 1 - _index] == '6':
numsum = int(numsum) + int(num[numlen - 1 - _index]) * (16 ** _index)
if num[numlen - 1 - _index] == '7':
numsum = int(numsum) + int(num[numlen - 1 - _index]) * (16 ** _index)
if num[numlen - 1 - _index] == '8':
numsum = int(numsum) + int(num[numlen - 1 - _index]) * (16 ** _index)
if num[numlen - 1 - _index] == '9':
numsum = int(numsum) + int(num[numlen - 1 - _index]) * (16 ** _index)
_index = int(_index) + 1
#print(numsum)
num = numsum
if o_ption2 == 'b' or o_ption2 == 'B':
num = bin(num)
print("\033[1;30m__1...5...9...13..17..21..25..29..33..\033[0m")
boh_blue(num)
if o_ption2 == 'o' or o_ption2 == 'O':
num = oct(num)
boh_blue(num)
if len(o_ption2) == 0:
num = int(num)
boh_blue(num)
if o_ption2 == 'h' or o_ption2 == 'O':
num = hex(num)
boh_blue(num)