Я хочу спросить, как преобразовать целое число в строку без использования встроенной функции.
Это оригинальный вопрос:
Напишите string(ls)
функции 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
Вы можете продолжать делить заданное целое число на 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