2015-11-04 178 views
1

如何用百分比向左對齊行,所以輸出看起來不錯?Python 3.5字符串格式化

這個問題似乎是以下行:

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

樣品輸入和程序輸出:

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 

目標:

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 

代碼:

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

一堆試驗和錯誤我設法得到它之後。更改此行

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

這個。發生了什麼變化的是間距值{0:>8.2f} - >{0:>9.2f}end現在是一個空格end=' '的字符串。

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

那麼你可以使間距值任意你想要的數字,它只需要匹配用於打印百分比的值。

或者,也可以對打印價格

的完整代碼的end=' '(備用線評論中):

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()