如何 remove/delete 打印列表中的最后一个字符 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
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
我正在创建一个简单的程序,它可以找到一个数字的最小乘数(不确定这是否是正确的术语)。但是,我找不到从列出的结果中删除最后一个“*”的方法。我究竟做错了什么?请帮忙。
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
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