【问题标题】:I need to print without comma in last position [duplicate]我需要在最后一个位置打印没有逗号[重复]
【发布时间】:2021-03-10 06:20:55
【问题描述】:
n = int(input("Enter a number :-"))
for i in range(1, 11):
    print(i*n, end = ",")

当我尝试这个程序时,在输出中我在最后一个位置有一个逗号。但我不想要这个逗号。如何删除逗号? 我只是为一个乘法表编写代码。

输出: 8,16,24,32,40,48,56,64,72,80,

【问题讨论】:

  • print(','.join(str(x * n) for x in range(1, 11)))

标签: python comma


【解决方案1】:

您可以在打印前检查索引

n = int(input("Enter a number :-"))
for i in range(1, 11):
    end = "," if i < 10 else ""
    print(i*n, end = end)

【讨论】:

    【解决方案2】:

    生成一个系列,您可以使用自定义分隔符一次性传入print,而不需要在单独的print 调用中找出正确的行尾:

    print(*(i*n for i in range(1, 11)), sep=',')
    

    这个*将生成器(i*n for i in range(1, 11))解包为print的参数,本质上相当于:

    print(8, 16, 24, ..., sep=',')
    

    【讨论】:

      【解决方案3】:

      Python 让您可以使用 join 轻松做到这一点:

      n = int(input("Enter a number: "))
      print(','.join(str(i*n) for i in range(1, n)))  # surely, range(1, n) not range(1, 11)
      

      对于更复杂的情况,一个常见的解决方案是前缀除了第一个之外的每个项目。

      n = int(input("Enter a number: "))
      sep = ""
      for i in range(1, n):  # same fix here
          print("%s%i" % (sep, i*n), end = "")
          sep = ","   # add a delimiter on each subsequent iteration
      

      【讨论】:

        【解决方案4】:

        最好的方法是使用 Join 函数

        使用使用生成器表达式:

        def gen_num(n,count):
            for i in range(1, count):
                yield str(i*n)
        
        print(",".join(list(gen_num(8,11))))
        

        使用列表理解

        n = 8
        print(",".join([str(x*n) for x in range(1,11)]))
        

        结果:8,16,24,32,40,48,56,64,72,80

        【讨论】:

        • FWIW,[] 是多余的。您可以在此处使用 生成器表达式 而不是列表推导式。
        • @deceze 感谢您的建议:我也更新了生成器表达式。
        • 嗯,不,那是一个更复杂的生成器函数。我所说的只是print(",".join(str(x*n) for x in range(1,11))) 就足够了……
        猜你喜欢
        • 2018-07-19
        • 1970-01-01
        • 2021-01-18
        • 1970-01-01
        • 2017-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多