前言
作为一个python新手小白,今天写了一个有意思的进制转换的小程序,在这里分享给各位爱学习的小伙伴们!
一、为啥要写这个程序呢?
我们都知道,其实python其实是自带有进制转换函数的,bin#(10进制转2进制),oct#(10进制转8进制),hex#(10进制转16进制),写这个程序的主要目的在于掌握函数的运用和流程控制!所以希望大佬莫要喷我,说“小题大做哦”!
二、代码!!!
代码示范:
# 定义一个进制输出函数
def output_arrwy(a):
for i in a:
print(i,end="")
# 定义一个10进制转2进制函数
def two_transfer(x):
a = []
while x != 0:
a.append(x%2)
x =int(x/2)
a.reverse()
output_arrwy(a)
# 定义一个10进制转8进制函数
def eight_transfer(x):
a = []
while x != 0:
a.append(x%8)
x =int(x/8)
a.reverse()
output_arrwy(a)
# 定义一个10进制转16进制函数
def sixteen_transfer(x):
a = []
while x != 0:
a.append(x%16)
x = int(x/16)
a.reverse()
i = 0
b = len(a)
while i <= b - 1:
if a[i] == 10:
a[i] = 'A'
elif a[i] == 11:
a[i] = 'B'
elif a[i] == 12:
a[i] = 'C'
elif a[i] == 13:
a[i] = 'D'
elif a[i] == 14:
a[i] = 'E'
elif a[i] == 15:
a[i] = 'F'
i += 1
print(a)
for k in a:
print(k, end="")
# 定义一个2进制转16进制函数
def two_transfer_sixteen(x):
li = list(str(x))
print(li)
i = 0
b = len(li)
sum = 0
while i <= b-1:
sum += int(li[i]) * 2**(b-i-1)
i +=1
print(sum)
sixteen_transfer(sum)
# 定义一个2进制转8进制函数
def two_transfer_eight(x):
li = list(str(x))
print(li)
i = 0
b = len(li)
sum = 0
while i <= b - 1:
sum += int(li[i]) * 2 ** (b - i - 1)
i += 1
print(sum)
eight_transfer(sum)
print("欢迎使用mc开发的程序!".center(50, '*'))
a = []
s = int(input("请输入需要转换的 2进制 or 10进制数s:"))
t = int(input("请输入需要转换的进制(2,8,16,28,216) t:"))
if t == 2:
two_transfer(s)
elif t == 8:
eight_transfer(s)
elif t == 16:
sixteen_transfer(s)
elif t == 28:
two_transfer_eight(s)
elif t == 216:
two_transfer_sixteen(s)
else:
print("你的输入有错误")
print("\n")
print("感谢使用mc开发的程序!".center(60, '*'))
这段代码能够实现的功能有:将10进制数转换为2、8、16进制数,同时也能够将2进制数转换为8、16进制,代码中的算法不难看明白,适用于各种刚刚开始学习python的小伙伴们哦!
程序执行结果如下:
#2进制的执行
*******************欢迎使用mc开发的程序!*******************
请输入需要转换的 2进制 or 10进制数s:12345
请输入需要转换的进制(2,8,16,28,216) t:2
11000000111001
************************感谢使用mc开发的程序!************************
#16进制的执行
*******************欢迎使用mc开发的程序!*******************
请输入需要转换的 2进制 or 10进制数s:9999999
请输入需要转换的进制(2,8,16,28,216) t:16
[9, 8, 9, 6, 7, 'F']
98967F
************************感谢使用mc开发的程序!************************
#2进制转16进制的执行
*******************欢迎使用mc开发的程序!*******************
请输入需要转换的 2进制 or 10进制数s:1314999
请输入需要转换的进制(2,8,16,28,216) t:216
['1', '3', '1', '4', '9', '9', '9']
271
[1, 0, 'F']
10F
************************感谢使用mc开发的程序!************************
可以看到如果使用python自带的函数,可能会带有前缀ob、ox等,而且16进制转换后是小写的abcdef,小编写的这一程序可实现大写输出,还是有优点的哦!
# 调用python自带的函数转换16进制
print(hex(9999999))
>> 0x98967f #执行的结果
三、总结
这是小编第一次在CSDN上发表文章,希望能够得到各位小伙伴的支持哦!小编先谢谢大家啦!有啥问题可以留言询问哦!