You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不使用列表及remove函数时消除打印末尾多余的'+ '

问题描述

我写了这段Python代码:

answer = input('Enter a number: ')
x = 10**(len(answer) - 1)
print(answer, end = ' = ')
for i in answer: 
    if '0' in i:
        x = x//10
        continue
    else:
        print('(' + i + ' * ' + str(x) + ')' , end = '')
        x = x//10
        print(' + ', end = '')

运行后发现不管输入什么数字,输出末尾都会多一个多余的+。本来可以用列表和.remove()函数解决,但这次不允许用这些方法。我试过匹配长度的办法,但因为数字里有0就失效了,现在找不到不借助函数的解决办法。

解决方案

不用列表或内置函数的话,有两个简单可行的思路:

思路1:标记第一个非零项

加个变量跟踪是不是第一次输出有效项,只有不是第一次的时候才在内容前加+,从根源避免末尾出现多余符号:

answer = input('Enter a number: ')
x = 10**(len(answer) - 1)
print(answer, end = ' = ')
first_item = True  # 标记是否是第一个要输出的有效项
for i in answer: 
    if '0' in i:
        x = x//10
        continue
    if first_item:
        # 第一个项直接打印,不加前缀
        print(f'({i} * {x})', end='')
        first_item = False
    else:
        # 非第一个项,先打印+再输出内容
        print(f' + ({i} * {x})', end='')
    x = x//10

思路2:先拼接字符串再统一打印

把所有要输出的有效片段先攒到一个字符串里,最后和前缀一起打印,也能彻底避免多余的+:

answer = input('Enter a number: ')
x = 10**(len(answer) - 1)
output_str = ''
for i in answer: 
    if '0' in i:
        x = x//10
        continue
    if output_str:  # 如果已有内容,先加+连接符
        output_str += ' + '
    output_str += f'({i} * {x})'
    x = x//10
print(f'{answer} = {output_str}')

这两种方法都没用到列表或.remove()函数,而且能正确处理含0的数字,比如输入10203,会输出10203 = (1 * 10000) + (2 * 100) + (3 * 1),末尾不会留多余的+。

内容的提问来源于stack exchange,提问作者pythonnoob3444

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:15:41