我有一个整数123。“如何生成字符串”;100+;20+;3“;使用python?

我有一个整数123。“如何生成字符串”;100+;20+;3“;使用python?,python,Python,我有一个整数123。我需要将其转换为字符串“100+20+3” 如何使用Python实现它 我试着先将数字除以100,然后再将商乘以100。这似乎效率很低。我还有别的办法吗 a = 123 quot = 123//100 a1 = quot*100 我正在对所有数字重复上述过程。另一个选择是通过数字索引执行: def int_str(i): digits = len(str(i)) result = [] for digit in range(digits):

我有一个整数123。我需要将其转换为字符串“100+20+3” 如何使用Python实现它

我试着先将数字除以100,然后再将商乘以100。这似乎效率很低。我还有别的办法吗

a = 123
quot = 123//100
a1 = quot*100

我正在对所有数字重复上述过程。

另一个选择是通过数字索引执行:

def int_str(i):
    digits = len(str(i))
    result = []
    for digit in range(digits):
        result.append(str(i)[digit] + '0' * (digits - digit - 1))
    print ' + '.join(result)
其中:

>>> int_str(123)
100 + 20 + 3
这是通过获取每个数字并添加一个等于当前数字后面数字数量的零来实现的。(在索引
0
处,长度为
3
,剩下的数字是
3-0-1
,因此第一个数字后面应该有
2
零。)

循环完成后,我有一个列表
[“100”、“20”、“3”]
,然后使用join添加连接
“+”
s.

(Ab),使用列表理解:

>>> num = 123
>>> ' + '.join([x + '0' * (len(str(num)) - i - 1) for i, x in enumerate(str(num))])
'100 + 20 + 3'
工作原理:

迭代0

索引0处的数字:“1” +('0'*(数字-1-iter\U计数)=2)='100'

迭代1

索引1处的数字:“2” +('0'*1)='20'

迭代2

索引2处的数字:“3” + ('0'*0)='3'


创建所有“数字”并将其放入列表后,调用
join
,并将其与字符串谓词
+

组合,以另一种方式实现您的目标:

def pretty_print(a):
    aa = str(a)
    base = len(aa) - 1
    for v in aa:
        yield v + '0' * base
        base -= 1

>>> ' + '.join(pretty_print(123))
'100 + 20 + 3'
以下是我的方法:

numInput= 123
strNums= str(numInput)
numberList= []
for i in range(0,len(strNums)):
  digit= (10**i)*int(strNums[-(i+1)])
  numberList.append(str(digit))

final= "+".join(numberList)
print(final) 
这是你想要的数学方法。 在数字系统中,每个数字都可以表示为实际位置的幂加上数字的10(从右到左从零开始计数)

所以我们把一个数字转换成一个字符串。然后在一个循环中,我们决定了迭代的范围,这个范围等于我们数字的长度。 范围:0到数字的长度 我们把这个数的幂给10,这样我们可以得到: 10^0,10^1,10^2

现在我们需要这个值和从右到左的数字相乘。所以我们使用了负指数。然后我们将数字的字符串值附加到一个空列表中,因为我们需要一个如您所说的形式的结果


希望对你有帮助

是的,你就是这样做的。你应该有一个循环来遍历10的不同幂。如果你按相反的顺序做,你不需要担心起点有多高,当剩下的数字为零时,你可以停下来。
'{}00+{}0+{}.format(*str(a))
你可能应该向OP解释一下。