如何在不使用列表及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
相关产品推荐
相关产品推荐

