我知道在Python中,我们可以很容易地使用str()将int转换为字符串.我想使用递归而不是使用str()将int转换为字符串.我想出了以下几个看似有效但看起来过于复杂的方法.有没有更干净、更优雅、更高效的算法?

def intTOstring(n,text=""):
    if n == 0:
        return text
    elif n < 10 and n > 0:
        return text + chr(n+48)
    else:
        x = n
        i = 0
        while(x >= 10):
            x = x // 10
            i += 1            
        n = n - x*10**i        
        text = text + chr(x+48)
        if n < 10**(i-1):
            text = text + chr(48)
        return intTOstring(n,text)
    
print(intTOstring(125))

推荐答案

是的,您可以使用模数来简化您的函数

def intToString(n):
    if not n:
        return ""
    return intToString(n // 10) + chr(48 + n % 10)

Python-3.x相关问答推荐

DuckDB:带有嵌套对象的星形表达式

如何获得给定列表中所有可能的元素组合?

在循环访问XML中的多个层时,xml.etree.Elementree Python3解析器不起作用

按一列分组,如果日期列相同,则在数字列中填写缺少的值

我无法直接在 VSCode 中运行该程序,但可以使用 VScode 中的终端运行它

Keras 中 Conv2D 层的意外结果

在气流中运行 DAG 时出现处理信号:ttou消息

将字符串表示与使用整数值的枚举相关联?

Python - For 循环数百万行

Tkinter AttributeError:对象没有属性'tk'

作为函数对象属性的 __kwdefaults__ 有什么用?

为什么在 Python 中不推荐使用 MutableString?

在 WSL (Ubuntu) 中为 python3 安装 venv

无 Python 错误/错误?

每次启动 Google Colab 时都必须安装所需的软件包吗?

TypeError:多个基地有实例布局冲突

Python 2 与 Python 3 - urllib 格式

有效地判断一个元素是否在列表中至少出现 n 次

十六进制字符串到 Python 3.2 中的带符号整数?

列表推导代替 Python 中的 reduce()