求解Python中的自定义函数问题

怎么去自己使用自定义函数,从而把十进制的m(整数换算成其他进制的R?(字符串)

可以使用以下方式(decimal_to_base为函数,输入两个数,m为十进制数,R为其它进制,测试时一行输入这两个数,空格分隔):

def decimal_to_base(m, R):
    if not isinstance(m, int) or m < 0:
        raise ValueError("m 必须是整数。")

    if not isinstance(R, int) or R < 2 or R > 16:
        raise ValueError("R 必须是2-16之间的整数。")

    digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    result = ""

    while m > 0:
        remainder = m % R
        result = digits[remainder] + result
        m = m // R

    return result or "0"


m, R = map(int, input().split())
result = decimal_to_base(m, R)
print(result)

测试输入(15转为16进制):
15 16
输出:
F
输入(2转为2进制):
2 2
输出:
10

分情况:

  1. 转换为二进制
    bin(2)='0b10'
  2. 转换为八进制
    oct(10)='0o12'
  3. 转换为十六进制
    hex(255)='0xff'

其他情况:

def convert(x, base):
    res = ''
    while x > 0:
        r = x % base
        x //= base
        res += '0123456789abcdef'[r]
    return res[::-1] or '0' # 特殊处理0的情况

其实这个函数是通用的,转换为2-16进制都可以。大于16进制没有固定的表示法,所以不做实现。

使用示例:

>>> convert(10, 4)
'22'
>>> convert(255, 16)
'ff'
>>> convert(10, 8)
'12'
>>> convert(7, 2)
'111'
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7801258
  • 你也可以参考下这篇文章:python -m是拿来干啥用的?
  • 你还可以看下python参考手册中的 python- 旧式字符串格式化方法
  • 除此之外, 这篇博客: 【Python从入门到精通】(二十八)五万六千字对Python基础知识做一个了结吧【值得收藏】中的 只读模式(只读数据r) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 创建一个名为my_file.txt的文件,文件有如下内容:

    全网同名:
    这是Python系列的第十八篇文章
    https://feige.blog.csdn.net/
    
    1. 通过二进制的方式(rb)打开图片,针对二进制文件(图片,视频等)的话只能使用rb方式来读取文件。

      f = open(‘my_file.txt’, ‘rb’)
      f_bytes = f.read()
      print(f_bytes)
      print(f_bytes.decode(‘utf-8’))
      f.close()

    运行结果是:

    b'??¨??????????????????é£???¥
    è????ˉPython?3?????????????????ˉ???????
    https://feige.blog.csdn.net/'
    全网同名:
    这是Python系列的第十八篇文章
    https://feige.blog.csdn.net/
    *********readline方法读取全部内容**********
    全网同名:
    这是Python系列的第十八篇文章
    
  • 您还可以看一下 张旭老师的【拯救者】Python期末考试急救(含整套真题讲解)课程中的 【拯救者】03六大数据类型简介&注释小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    可以使用Python的内置函数bin()oct()hex()来进行进制转换,但如果需要自定义转换进制,可以使用循环和取余实现,具体步骤如下: 1. 编写一个自定义函数decimal_to_R(num, R),其中num表示待转换的十进制整数,R表示目标进制,函数的返回值为目标进制下的字符串表示。 2. 使用循环来不断对num进行求余和整除,求余部分可以映射为目标进制下的某一位数,添加到列表中,并更新num的值,如果num变为0,则退出循环。 3. 将列表中的元素反转后合并为字符串,成为最终结果,返回该字符串即可。

    示例代码如下:

    def decimal_to_R(num, R):
        # num: 十进制整数
        # R: 目标进制
        # 返回值: 目标进制下的字符串表示
        if num == 0:
            return '0'
        res = []
        while num:
            res.append(str(num % R))
            num //= R
        res.reverse()
        return ''.join(res)
    
    # 示例
    print(decimal_to_R(59, 2)) # 输出:111011
    

    在示例中,将十进制整数59转换为二进制表示,结果为111011