我试图获取以下内容:我想打印一系列整数,但如果整数包含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,而不必复制代码行?
提前致谢。
答案 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 )。
希望这就是你所追求的!