Cześć drodzy pasjonaci.
Czy ktoś może podpowiedzieć jak prawidłowo sformatować poniższą dynamiczną tabliczkę mnożenia? chodzi o równe odstępy między wyrazami w kolumnach.
Problem polega na tym, że funkcja join na sztywno traktuje oddzielanie wyrazów ciągu, poprzez to gdy wyrazy zaczynają mieć więcej niż 1 znak, cala tabliczka zaczyna się ,, rozjeżdżać”.
Napisałem to w zwykłych pętlach, w tablicach ale efekt jest ten sam. Próbowałem, też dodać jakąś zmienną zawierająca formatowaną ilość znaków np.: {:4s}.format ( nazwa zmiennej) i potem // nazwa zmiennej.join(…) ale to nie przynosi żadnego efektu.
Jak ktoś ma chwile bardzo proszę o pomoc. Zamieszczam kody i output:
size = int(input("Provide table size: "))
tab = []
for i in range(1, size + 1):
tab.append(i)
print(" "+" ".join([str(tab[i]) for i in range(len(tab))]))
for i in range(len(tab)):
multi = []
for j in range(len(tab)):
x = tab[i]*tab[j]
x = str(x)
multi.append(x)
print(str(tab[i]) +" "+" ".join(multi))
Output:
1 2 3 4 5
1 1 2 3 4 5
2 2 4 6 8 10
3 3 6 9 12 15
4 4 8 12 16 20
5 5 10 15 20 25
def main_table(n):
board = []
table = []
for i in range(1,n+1):
table.append(i)
board.append(table)
if i == n:
print(" "+" ".join([str(table[i]) for i in range(len(table))]))
item = -1
count = 0
for row in board:
item += 1
count += 1
multip_row =[]
for j in range(1,n+1):
x = row[item]*j
multip_row.append([x])
print(count, multip_row)
main_table(int(input("Table size: ")))
Output:
1 2 3 4 5
1 [[1], [2], [3], [4], [5]]
2 [[2], [4], [6], [8], [10]]
3 [[3], [6], [9], [12], [15]]
4 [[4], [8], [12], [16], [20]]
5 [[5], [10], [15], [20], [25]]