Python string length generate output

Question:

I am trying to create ruler by print, it should look like this for input value 5:

enter image description here

Im trying to change in my code numbers to symbols, my code is:

length = str(input("Enter the ruler length = "))


def ruler(string):
    top = []
    top_out = []
    bottom = []
 
    for i in range(length):
        top.append((i+1)//10)
        bottom.append((i+1)%10)
        for i in range(length):
            if ((i+1)//10) == 0:
                top_out.append(" ")
            elif (((i+1)//10) in list(sorted(set(top)))) and (((i+1)//10) not in top_out):
                top_out.append(((i+1)//10))
            else:
                top_out.append(" ")
                print (''.join(list(map(str, top_out))))
                print (''.join(list(map(str,bottom))))
                print (string)

How to correct it to get appropriate output format of a ruler?

Asked By: Malum Phobos

||

Answers:

Ruler printing can be down by pretty small function like this,

def print_ruler(n):
    print('|....'*(n)+'|')
    print(''.join(f'{i:<5}' for i in range(n+1)))

Execution:

In [1]: print_ruler(5)
|....|....|....|....|....|
0    1    2    3    4    5    

In [2]: print_ruler(10)
|....|....|....|....|....|....|....|....|....|....|
0    1    2    3    4    5    6    7    8    9    10   

In [3]: print_ruler(15)
|....|....|....|....|....|....|....|....|....|....|....|....|....|....|....|
0    1    2    3    4    5    6    7    8    9    10   11   12   13   14   15

For double-digit numbers, It doesn’t come to the center.

For ex: For 12, | align with number 1 or 2 it can’t not make into the center of 12

Answered By: Rahul K P
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.