【问题标题】:How to remove/delete last character from printed list in python如何从python中的打印列表中删除/删除最后一个字符
【发布时间】:2017-12-04 15:13:22
【问题描述】:

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

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] 但这不起作用,或者我做错了。 谢谢你。

【问题讨论】:

    标签: python python-3.x printing character separator


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      一种选择是在打印“*”之前检查是否 num =1

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

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

      【讨论】:

        【解决方案3】:

        您可以连接您的结果:

        s += div + "*"
        

        然后不要打印最后一个符号:

        print(s[:-1])
        

        但在我看来,这是一个糟糕的决定,因为在 python 中,字符串类型是不可变类型 --> 并且每次 "s += div + "*"" 都会创建新变量 "s"。

        【讨论】:

          【解决方案4】:
          import sys
          sys.stdout.write('\b \b') ##at the end of the program
          

          结果:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-10-17
            • 1970-01-01
            • 2023-02-07
            • 1970-01-01
            • 1970-01-01
            • 2013-09-12
            • 1970-01-01
            相关资源
            最近更新 更多