如何不使用内置函数将整数转换为字符串?

时间:2018-09-24 10:56:56

标签: python python-3.x

我想问一下如何在不使用内置函数的情况下将整数转换为字符串。

这是原始问题:

编写一个函数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

2 个答案:

答案 0 :(得分:2)

您可以将给定的整数除以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 :(得分:0)

这应该工作吗?我还很新,所以我不知道为什么您的代码这么复杂。这也应该起作用。

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