蓝桥杯-十进制转换十六进制(py-纯代码写法)

问题描述
  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
  给出一个非负整数,将它表示成十六进制的形式。
输入格式
  输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
输出格式
  输出这个整数的16进制表示
样例输入
30
样例输出
1E

# 定义一个变量接收用户输入的十进制数字
num = int(input("输入一个整数:"))

# 定义一个数组,存储十六进制
list1 = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
# 定义一个空数组,用来存储运算之后的值
list2 = []
# 定义一个空字符串,用来最后拼接输出结果
str = ''

# 判断当前用户输入的数字是否小于16,小于直接在list1 里面取值
if num < 16:
    # 取值list1存放到list2中
    list2.append(list1[num])
else:   # 用户输入的值大于十六
    # 第一次进行运算
    #取余数
    num1 = int(num % 16)
    # 取整数
    num2 = int(num / 16)
    # 把余数(小于16)从list1取出放到list2中
    list2.append(list1[num1])
    # 判断 第一次运算后的值是否小于16,若是小于16 则直接取值存到list2里面
    if num2 < 16:
        list2.append(list1[num1])
    # 此处若是第一次运算之后大于十六会进行的死循环运算
    while True:
        # 进入死循环,每次取商运算的值若是大于16会接着进行运算
        if num2 > 16:
            # 取余操作
            num1 = int(num2 % 16)
            # 取商操作
            num2 = int(num2 / 16)
            # 取list1对应的值进行添加操作
            list2.append(list1[num1])
            # 若是经过若干次运算,取商操作小于16 则进行赋值
            if num2 < 16:
                list2.append(list1[num2])
        else: # 经过死循环运算,取商小于16
            # 跳出死循环
            break

# 循环遍历list2 倒叙输出,进行字符串拼接
for i in range(len(list2), 0, -1):
    str += list2[i - 1]

# 输出打印结果
print(str)

来自作者真诚的问候

PS:以上写法是揪掉了若干根头发写出来的,这不是最好的,肯定还有更好的写法。
其实用Python自带的函数只需三两行代码就可以写出来,感兴趣可以查阅相关资料。

在这若是还有更好的写法,可以告知,万分感谢!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值