2017-09-24 39 views
0

我工作的一个程序,接受一个数字并打印其时代的表与它周围的支架,直到答案去这一切工作正常到两位数Python的 - 动态括号总结

CODE:

number = int(input("Input a number: ")) 

length_of_sum = len(str(number)) 
longest = len(str(number*10)) 
length_of_sum = length_of_sum + 12 + longest 
print('+-' + '-'*(length_of_sum) + '-+') 
i = 1 
for i in range(10): 
    print('| ',number, " X ", i, " = ",number*i, '|') 
    i = i + 1 

print('+-' + '-'*(length_of_sum) + '-+') 

输出:

Input a number:3 
+-----------------+ 
| 3 X 0 = 0 | 
| 3 X 1 = 3 | 
| 3 X 2 = 6 | 
| 3 X 3 = 9 | 
| 3 X 4 = 12 | 
| 3 X 5 = 15 | 
| 3 X 6 = 18 | 
| 3 X 7 = 21 | 
| 3 X 8 = 24 | 
| 3 X 9 = 27 | 
+-----------------+ 

正如你可以看到这一切工作正常,但随后的界限变得太大,或者我应该说 边界开始起飞太小。

(注:你能回答这个问题相对简单,因为我现在没蟒蛇说好又

回答

1

您可以可以将所有数字格式化为n个数字,其中n是数字在number*10数量:

number = int(input("Input a number: ")) 

length_of_sum = len(str(number)) 
longest = len(str(number*10)) 
length_of_sum = length_of_sum + 12 + longest 
print('+-' + '-'*(length_of_sum) + '-+') 
i = 1 
m = str(longest)+'d' 
for i in range(10): 
    print('| ',number, " X ", i, " = ",format(number*i, m), '|') 
    i = i + 1 

print('+-' + '-'*(length_of_sum) + '-+') 

试验1:

Input a number: 3 
+-----------------+ 
| 3 X 0 = 0 | 
| 3 X 1 = 3 | 
| 3 X 2 = 6 | 
| 3 X 3 = 9 | 
| 3 X 4 = 12 | 
| 3 X 5 = 15 | 
| 3 X 6 = 18 | 
| 3 X 7 = 21 | 
| 3 X 8 = 24 | 
| 3 X 9 = 27 | 
+-----------------+ 

试验2:

Input a number: 18 
+-------------------+ 
| 18 X 0 = 0 | 
| 18 X 1 = 18 | 
| 18 X 2 = 36 | 
| 18 X 3 = 54 | 
| 18 X 4 = 72 | 
| 18 X 5 = 90 | 
| 18 X 6 = 108 | 
| 18 X 7 = 126 | 
| 18 X 8 = 144 | 
| 18 X 9 = 162 | 
+-------------------+ 
+0

在Python 3中弃用了%字符串运算符3 – Albert

+0

@Albert它仍然在Python 3.6.1中使用,无论如何,我将'%'更改为'format()'。 –