1

How to align to the left the row with percentages, so the output look nice?

The problem seems to be in the following line:

print("{:>9}%".format(i*10), end='')

Sample input and output of the program:

How many columns should there be (1-6) ? 4
How many rows should there be in the table? 5
Original   Price discounted by
   price       20%       30%       40%       50%
    5.00     4.00    3.50    3.00    2.50 
   10.00     8.00    7.00    6.00    5.00 
   15.00    12.00   10.50    9.00    7.50 
   20.00    16.00   14.00   12.00   10.00 
   25.00    20.00   17.50   15.00   12.50 

The goal:

How many columns should there be (1-6) ? 4
How many rows should there be in the table? 5
Original   Price discounted by
   price      20%     30%     40%     50%
    5.00     4.00    3.50    3.00    2.50 
   10.00     8.00    7.00    6.00    5.00 
   15.00    12.00   10.50    9.00    7.50 
   20.00    16.00   14.00   12.00   10.00 
   25.00    20.00   17.50   15.00   12.50 

The code:

column = int(input("How many columns should there be (1-6) ? "))
row = int(input("How many rows should there be in the table? "))

initialPrice = 5.00
initialDiscount = 10.0

print("{0:>8} {1:>21}".format("Original", "Price discounted by"))
print("{0:>8}".format("price"), end='')
for i in range(2,column+2):
    print("{:>9}%".format(i*10), end='')
print()

for y in range (1,row+1):
    print("{0:>8.2f} ".format(y * initialPrice), end='')
    for x in range (2,column+2):
        print("{0:>8.2f}".format(y * initialPrice * (1 - x*0.1)), end='')
    print()

1 Answer 1

1

After a bunch of trial and error I managed to get it. Change this line

print("{0:>8.2f}".format(y * initialPrice * (1 - x*0.1)), end='')

to this. What has changed is the spacing value {0:>8.2f} -> {0:>9.2f} and end is now a string with a space end=' '.

print("{0:>9.2f}".format(y * initialPrice * (1 - x*0.1)), end=' ')

Well you can make the spacing value any number you want, it just has to match the value used for the print percentages.

Alternatively, you can have the end=' ' on the print prices

Full Code (Alternate lines are commented in):

column = int(input("How many columns should there be (1-6) ? "))
row = int(input("How many rows should there be in the table? "))

initialPrice = 5.00
initialDiscount = 10.0

print("{0:>8} {1:>21}".format("Original", "Price discounted by"))
print("{0:>8}".format("price"), end='')
#print("{0:>8}".format("price"), end=' ')
for i in range(2,column+2):
    print("{:>9}%".format(i*10), end='')
print()

for y in range (1,row+1):
    print("{0:>8.2f} ".format(y * initialPrice), end='')
    for x in range (2,column+2):
        print("{0:>9.2f}".format(y * initialPrice * (1 - x*0.1)), end=' ')
        #print("{0:>9.2f}".format(y * initialPrice * (1 - x*0.1)), end='')
    print()
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.