def pow_printer(max_val, max_pow):
# What we are doing is creating sublists, so that for each sublist, we can
# print them separately
_ret = [[pow(v, p) for p in range(1, max_pow+1)] for v in range(1, max_val+1)]
# The above produces, with max_val = 5 and max_pow = 5:
# [[1, 1, 1, 1, 1], [2, 4, 8, 16, 32], [3, 9, 27, 81, 243], [4, 16, 64, 256, 1024], [5, 25, 125, 625, 3125]]
# Now, we are looping through the sub-lists in the _ret list
for l in _ret:
for var in l:
# This is for formatting. We as saying that all variables will be printed
# in a 6 space area, and the variables themselves will be aligned
# to the right (>)
print "{0:>{1}}".format(var,
len(str(max_val**max_pow))), # We put a comma here, to prevent the addition of a
# new line
print # Added here to add a new line after every sublist
# Actual execution
pow_printer(8, 7)
출력 : 원하는 출력으로
import math
def print_grid(x, y):
# Get width of each number in the bottom row (having max values).
# This width will be the column width for each row.
# As we use decimals it is (log10 of the value) + 1.
sizes = [int(math.log10(math.pow(y, xi)) + 1) for xi in range(1, x + 1)]
for yj in range(1, y + 1):
row = ''
for xi in range(1, x + 1):
value = pow(yj, xi)
template = '%{size}d '.format(size=sizes[xi-1])
row += template % value
print row
print_grid(5, 5)
이 잘 작동
1 1 1 1 1 1 1
2 4 8 16 32 64 128
3 9 27 81 243 729 2187
4 16 64 256 1024 4096 16384
5 25 125 625 3125 15625 78125
6 36 216 1296 7776 46656 279936
7 49 343 2401 16807 117649 823543
8 64 512 4096 32768 262144 2097152
Working example.
참조 : http://docs.python.org/2/library/string.html#format-specification-mini -언어 – BlackVegetable