Posts pythonTip 49 进制转换
Post
Cancel

pythonTip 49 进制转换

题目描述: 给你一个十进制数a,将它转换成b进制数,如果b>10,用大写字母表示(10用A表示,等等)a为32位整数,2 <= b <= 16。 如a=3,b = 2, 则输出11

示例:

输入:a = 7 b = 2 输出:111

分析: 进制转换,进制转换是还是比较简单的一个问题,然后有一个点需要注意,那就是负数的问题,这个要特殊的处理一下。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
char_lst = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
for i in range(0, 26):
    char_lst.append(chr(65+i))
# 用 char_lst 保存各个进制下面的一个字符
    
# 进制转换函数
def trans(num, pos):
    res = []

    while num:
        res.append(char_lst[num%pos])
        num //= pos
    return "".join(res[::-1])

# 对于负数问题的特殊判断
fu = ""
if a < 0:
    a = -a
    fu = "-"
print(fu+trans(a, b))
This post is licensed under CC BY 4.0 by the author.
Trending Tags
Contents

pythonTip 48 砝码问题II

pythonTip 50 Py扔铅球

Trending Tags