如何在不使用内置函数的情况下将整数转换为字符串?

3
我想问如何在不使用内置函数的情况下将整数转换为字符串。
这是原始问题:
编写一个名为string(ls)的函数,返回列表ls的字符串表示形式。
注意:不要使用内置的str()方法来完成此任务。我们正在尝试模拟其行为。
s = string(['a','b','c'])   # '['a','b','c']'

s = string([1,2,3])         # '[1, 2, 3]'

s = string([True])          # '[True]'

s = string([])              # '[]'

限制: 不要只返回str(ls)! 不要使用str.join方法,也不要使用切片。

这是我的代码:

def string(ls):
    if len(ls)==0:
        mess="'[]'"
        return mess
    elif isinstance(ls[0],str):
        i=0
        mess="'["
        while True:
            if i==len(ls)-1:
                elem="'"+ls[i]+"'"
                mess=mess+elem
                break
            else:
                elem="'"+ls[i]+"', "
                mess=mess+elem
            i=i+1
        mess=mess+"]'"
        return mess
    else:
        i=0
        mess="'["
        while True:
            if i==len(ls)-1:
                elem=str(ls[i])+"]'"
                mess=mess+elem
                break
            else:
                elem=str(ls[i])+', '
                mess=mess+elem
            i=i+1
        return mess

3
你有什么问题? - Thierry Lathuille
3
你发布的代码有什么问题吗? - Aran-Fey
@Aran-Fey 我使用内置函数 str() 来编写我的代码。但是问题要求我不使用这些类型的函数。有没有解决这个问题的方法? - An Yan
@ForceBru 抱歉... 我无法完全理解。你能详细解释一下吗? - An Yan
@Aran-Fey 哦...在第三行,它还要求我不使用str()函数。 - An Yan
显示剩余6条评论
2个回答

4

您可以通过将给定的整数不断除以10并将余数前置到输出字符串中来实现。使用'0'的序数加上余数来获取余数的序数,然后使用chr函数将其转换为字符串:

def int_to_string(i):
    string = ''
    while True:
        i, remainder = divmod(i, 10)
        string = chr(ord('0') + remainder) + string
        if i == 0:
            break
    return string

这样做的目的是:

print(int_to_string(0))
print(int_to_string(5))
print(int_to_string(65))
print(int_to_string(923))

将输出:

0
5
65
923

1
太好了!谢谢你! - An Yan

0

这个应该可以工作吧?我是新手,所以不知道为什么你的代码那么复杂。这个也应该可以工作。

def int_to_string(i):
string = chr(ord("0") + i)
return string

1
您提供的代码仅适用于单个数字,对于像10或44这样的数字无效。 - Karpi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接