如何实现数字按位拆分并以累加表达式形式输出?
问题解决思路与代码修改
你的代码已经正确提取了每个数位对应的权值,但生成的列表顺序是反的——比如输入35时,list1是[5, 30],而我们需要的是[30, 5]。只需要几步调整就能得到预期输出:
- 反转列表,让元素按高位到低位排列;
- 将列表中的每个数字转成字符串;
- 用
+(或带空格的+)把这些字符串连接起来; - 把连接好的字符串作为函数返回值,替代原有的列表打印操作。
修改后的完整代码
def place(n): total = 1 value = 0 list1 = [] while n != 0: rem = n % 10 n = n // 10 value = total * rem list1.append(value) total *= 10 # 反转列表得到正确的高位到低位顺序 list1.reverse() # 用'+'连接所有元素(想要带空格格式就换成' + ') return '+'.join(map(str, list1)) n = int(input()) print(place(n))
测试效果
- 输入
35,输出30+5; - 输入
456,输出400+50+6。
如果想要带空格的分隔格式(比如30 + 5),只需把代码中的'+'.join(...)改成' + '.join(...)即可。
内容的提问来源于stack exchange,提问作者Gagan Mishra
相关产品推荐
相关产品推荐

