废话不多说了,直接上代码
##输入的非限制数字会被报错
##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)
|