I wrote a program to give arguments to the multiply function t print the tables.
def multipy(*args):
"""displaying the tables with the arguments supplied"""
for j in range(1,11):
for i in args:
print(f'{i} X {j:>2} = {i*j:>2}', end='\t')
print()
multiply (2,3,6,9)
this works for less arguments like “multiply(2,4,5,17)”
But this is not working when i give either many arguments or floating point numbers or bigger numbered tables.
like multiply(2.5,34.2,38.5) or multiply(2,4,5,6,12,15,19,22) or multiply(234,2435,734)
In [70]: multipy(2,4,6,7,19,23,25,28,12)
2 X 1 = 2 4 X 1 = 4 6 X 1 = 6 7 X 1 = 7 19 X 1 = 19 23 X 1 = 23 25 X 1 = 25 28 X 1 = 28 12 X 1 = 12
2 X 2 = 4 4 X 2 = 8 6 X 2 = 12 7 X 2 = 14 19 X 2 = 38 23 X 2 = 46 25 X 2 = 50 28 X 2 = 56 12 X 2 = 24
2 X 3 = 6 4 X 3 = 12 6 X 3 = 18 7 X 3 = 21 19 X 3 = 57 23 X 3 = 69 25 X 3 = 75 28 X 3 = 84 12 X 3 = 36
2 X 4 = 8 4 X 4 = 16 6 X 4 = 24 7 X 4 = 28 19 X 4 = 76 23 X 4 = 92 25 X 4 = 100 28 X 4 = 112 12 X 4 = 48
2 X 5 = 10 4 X 5 = 20 6 X 5 = 30 7 X 5 = 35 19 X 5 = 95 23 X 5 = 115 25 X 5 = 125 28 X 5 = 140 12 X 5 = 60
2 X 6 = 12 4 X 6 = 24 6 X 6 = 36 7 X 6 = 42 19 X 6 = 114 23 X 6 = 138 25 X 6 = 150 28 X 6 = 168 12 X 6 = 72
2 X 7 = 14 4 X 7 = 28 6 X 7 = 42 7 X 7 = 49 19 X 7 = 133 23 X 7 = 161 25 X 7 = 175 28 X 7 = 196 12 X 7 = 84
2 X 8 = 16 4 X 8 = 32 6 X 8 = 48 7 X 8 = 56 19 X 8 = 152 23 X 8 = 184 25 X 8 = 200 28 X 8 = 224 12 X 8 = 96
2 X 9 = 18 4 X 9 = 36 6 X 9 = 54 7 X 9 = 63 19 X 9 = 171 23 X 9 = 207 25 X 9 = 225 28 X 9 = 252 12 X 9 = 108
2 X 10 = 20 4 X 10 = 40 6 X 10 = 60 7 X 10 = 70 19 X 10 = 190 23 X 10 = 230 25 X 10 = 250 28 X 10 = 280 12 X 10 = 120
I think the end = '\t' that seperates your tables is the problem.
Don’t use it for formatting purposes, it’s difficult to know how much whitespaces you’ll end up with between the tables.
In your function here it adds 1 space when the line currently ends at 124 letters (i.e. after 28 x 1 = 28) and 8 spaces when it ends at 125 letters(the other lines). When changing {i*j:>2} to {i*j:>3} your example is okay, but when using the function for numbers bigger than 100 the error will be back.
I suggest you adjust {i*j:>2} depending on how many digits i has.
And for consistency replace end='\t' with a couple of whitespaces, then you can be sure that on every platform your output is the same
This one only works if i is an int, and only for j = 1…10 (1 space difference max)
For floats you have to additionally make sure every number has the same number of decimal places (use instanceof(i, int) to check if you need decimal places and add that case to the format-function)
Then you can use the following line in the multiply function for every number you want to multiply print(f'{i} X {j:>2} = {format(i,j)}', end=' ')