繁体   English   中英

如何从python中的打印列表中删除/删除最后一个字符

[英]How to remove/delete last character from printed list in python

我正在创建一个简单的程序,它找到一个数字的最小乘数(不确定这是否是正确的术语)。 但是,我找不到从列出的结果中删除最后一个“*”的方法。 我究竟做错了什么? 请帮忙。

num = int(input("write number: "))
print(num, end = "=")
div = 2
while num > 1:
    if num % div == 0:
        num = num / div
        print(div, end = "*")
    else:
        div += 1

结果我得到了:

24=2*2*2*3*

结果我想:

24=2*2*2*3

我尝试使用sep =“ ”而不是end =“ ”,试过\\ b,[: - 1]但是这不起作用或者我只是做错了。 谢谢。

您可以创建除数列表,然后打印连接列表。

num = int(input("write number: "))
print(num, end = "=")
div = 2
out = []
while num > 1:
    if num % div == 0:
        num = num / div
        out.append(div)
    else:
        div += 1
print('*'.join(map(str,out)))

测试:

write number: 24
24=2*2*2*3

一个选项只是在打印“*”之前检查num = 1是否为1

num = num / div
if num == 1 :
    print(div)
else :
    print(div, end = "*")

因为如果有更多的乘数,你只想打印一个*,如果div大于1,总会有另一个乘数。

您可以连接结果:

s += div + "*"

并且只是不打印最后一个符号:

print(s[:-1])

但在我看来这是一个糟糕的决定,因为在python类型字符串是不可变类型 - >因为它每次“s + = div +”*“”新变量“s”将被创建。

import sys
sys.stdout.write('\b \b') ##at the end of the program

结果:

write number: 24
24=2*2*2*3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM