打印水平平铺的整数 - Python3

时间:2016-01-06 10:46:53

标签: python-3.x printing

我试图获取以下内容:我想打印一系列整数,但如果整数包含10位以上的数字,那么' 1'在' 10'需要打印在上面。

e.g:

  

6 - > 123456

     

13 - > ................... 1111

     

.......... 1234567890123

备注,如果它包含少于10位的数字,那么上面没有'上面的'打印。并且'。'应该只用空格替换,但编辑不会让我这样做

我尝试过以下方法:

line10 = ''
line1 = ''

if length > 10:
    for i in range(length):
        if (i + 1) // 10 == 0:
            line10 += ' '
        else:
            line10 += str((i + 1) // 10)


for i in range(length):
    line1 += str((i + 1) % 10)

if length > 10:
    print(line10)
print(line1)

并且:这有效,但是你怎么能让它说100或1000,而不必复制代码行?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您的问题可能会有更优雅的解决方案,但我相信这可以满足您的需求:

def number_printer(n):

    lines = [[] for m in range(len(str(n)))]

    for i in range(1, n+1):
        diff = len(str(n))-len(str(i))

        if diff > 0:
            for z in range(diff):
                lines[z].append(" ")
            for x, y in enumerate(str(i)):
                lines[x+diff].append(y)
        else:
            for x, y in enumerate(str(i)):
                lines[x].append(y)

    for line in lines:
        print "".join(line)

if __name__ == "__main__":
    number_printer(132)

基本上,它是根据您要打印的数字的长度来检查每个数字的长度(在此示例中为132)。只要它找到差异(其中diff> 0),它会附加适当数量的空格,以便所有数字对齐(例如,对于数字12,它将附加1个空格,因为12和132之间的长度差异为1 )。

希望这就是你所追求的!