我想问一下如何在不使用内置函数的情况下将整数转换为字符串。
这是原始问题:
编写一个函数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
答案 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