废话不多说了,直接上代码
##输入的非限制数字会被报错 ##while True语句写这里是为了达到死循环的目的 ##因此不要break ##3就不限制了,写不出来 ##只是代码长 实际有手就行,初学者都能打…… while True: print(' 1.十转二、八、十六进制') print(' 2.二转八、十、十六进制') print(' 3.八转二、十、十六进制') print(' 4.十六转二、八、十进制') a=input(' 请输入:') if a==str(1) or a==str(2) or a==str(3) or a==str(4): pass else: print('键入无效') input(' 任意键重新输入') print("\n" * 37) if int(a)==1: ##if int(a)你可以str2化同样可以实现 b=input('请输入任意十进制数:') if b.isdigit()==False: print('输入的数不是有效的十进制') input('任意键继续') print("\n" * 37) else: ##直接通过内部命令得到二、八、十六进制数 b=int(b) binb=bin(b) octb=oct(b) hexb=hex(b) print(' 十进制'+str(b)) print(' 二进制:'+str(binb)) print(' 八进制:'+str(octb)) print(' 十六进制:'+str(hexb)) input(' 任意键重新输入') print("\n" * 37) ##如果运行在windows这里可以直接引用os的cls命令 ##这里的清屏命令原理是直接输出37个换行符 ,确实离谱 if int(a)==2: b=input(' 请输入任意二进制数:') c = {'0','1'} t = set(b) if c == t or t == {'0'} or t == {'1'}: ##先用int函数把二进制数转十进制数 ##再把上面十转二、八、十六复制下来,修改部分变量名即可 decb=int(b,2) binb=bin(decb) octb=oct(decb) hexb=hex(decb) print(' 二进制:'+str(binb)) print(' 十进制:'+str(decb)) print(' 八进制:'+str(octb)) print(' 十六进制:'+str(hexb)) input(' 任意键重新输入') print("\n" * 37) else: print('输入的数不是有效的二进制') input('任意键继续') print("\n" * 37) ##先用int把八进制转十进制 ##继续复制就完事了 if int(a)==3: b=input(' 请输入任意八进制数:') ##怎么判断输入的是不是8进制,且能运行在qpython上……真不会 decb=int(b,8) binb=bin(decb) octb=oct(decb) hexb=hex(decb) print(' 二进制:'+str(binb)) print(' 十进制:'+str(decb)) print(' 八进制:'+str(octb)) print(' 十六进制:'+str(hexb)) input(' 任意键重新输入') print("\n" * 37) ##十六进制判断的也写不来,这拉胯qpython的兼容性太差 ##和八转二、十、十六同理 if int(a)==4: b=input(' 请输入任意十六进制数:') decb=int(b,16) binb=bin(decb) octb=oct(decb) hexb=hex(decb) print(' 二进制:'+str(binb)) print(' 十进制:'+str(decb)) print(' 八进制:'+str(octb)) print(' 十六进制:'+str(hexb)) input(' 任意键重新输入') print("\n" * 37)