2015-11-04 103 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()