代码之家  ›  专栏  ›  技术社区  ›  Vishal Singh

如何删除python3中每行末尾的额外尾随空格

  •  0
  • Vishal Singh  · 技术社区  · 7 年前

            0
          0 1 0
        0 1 2 1 0
      0 1 2 3 2 1 0
        0 1 2 1 0
          0 1 0
            0
    

    数值方法

    limit = int(input())
    space = '  '
    for i in range(0, limit + 1):
        print(space * (limit - i), end='')
    
        for j in range(2 * i + 1):
            if j > i:
                print(i - (j - i), end=' ')
            else:
                print(j, end=" ")
        print()
    
    
    for i in range(0, limit)[::-1]:
        print(space * (limit - i), end='')
    
        for j in range(2 * i + 1)[::-1]:
    
            if j > i:
                print(i - (j - i), end=' ')
            else:
                print(j, end=" ")
        print()
    

    gap = '  '
    y = int(input())
    y = y + 1
    for n in range(1, y + 1):
        str1 = ' '.join(str(e) for e in list(range(n)))
        str2 = ' '.join(str(e) for e in list(range(n - 1))[::-1])
        print(gap * (y - n) + str1 + " " + str2.strip())
    
    for n in range(1, y)[::-1]:
        str1 = ' '.join(str(e) for e in list(range(n)))
        str2 = ' '.join(str(e) for e in list(range(n - 1))[::-1])
        print(gap * (y - n) + str1 + " " + str2.strip())
    

    图案打印正确,但当我提交给在线评判时,它不接受。

    wrong answer 1st lines differ - expected: '    0', found: '    0 '
    

    在这两个代码段中,我无法删除最后一行多余的空格。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Acccumulation    7 年前

    问题似乎是 gap * (y - n) + str1 + " " + str2.strip() str 是空的,所以你有 str1 join :

    for n in range(1, y + 1):
        list1 = [str(e) for e in list(range(n))]
        list2 = [str(e) for e in list(range(n - 1))[::-1]]
        print(gap * (y - n)+" ".join(list1+list2))
    

    顺便说一句 list(range(n - 1))[::-1] list(range(n-2,-1,-1))

    您还可以将列表理解与各种技巧结合起来,例如

    [str(e) if e < n else str(2*n-e) for e in range(2*n+1) ]