Как при выводе ответа сделать нужное кол-во пробелов, а не столько, сколько ставится автоматически?
код, он работает, но с выводом (именно с кол-вом пробелов есть проблема):
def squared(start, end, div):
s = ' '
for k in range(start, end + 1):
if (k * k % div != 0):
s += (str(k * k) + ' ' * 5)[0:5]
s += ' ' if (k + 1) % 10 != start % 10 else '\n'
print(s)
Ввод
squared(11, 99, 10)
Ожидаемый результат
121 144 169 196 225 256 289 324 361
441 484 529 576 625 676 729 784 841
961 1024 1089 1156 1225 1296 1369 1444 1521
1681 1764 1849 1936 2025 2116 2209 2304 2401
2601 2704 2809 2916 3025 3136 3249 3364 3481
3721 3844 3969 4096 4225 4356 4489 4624 4761
5041 5184 5329 5476 5625 5776 5929 6084 6241
6561 6724 6889 7056 7225 7396 7569 7744 7921
8281 8464 8649 8836 9025 9216 9409 9604 9801
Вывод
121 144 169 196 225 256 289 324 361
441 484 529 576 625 676 729 784 841
961 1024 1089 1156 1225 1296 1369 1444 1521
1681 1764 1849 1936 2025 2116 2209 2304 2401
2601 2704 2809 2916 3025 3136 3249 3364 3481
3721 3844 3969 4096 4225 4356 4489 4624 4761
5041 5184 5329 5476 5625 5776 5929 6084 6241
6561 6724 6889 7056 7225 7396 7569 7744 7921
8281 8464 8649 8836 9025 9216 9409 9604 9801
Сообщение
Line 1 differs: out:
>121 144 169 196 225 256 289 324 361<
corr:
>121 144 169 196 225 256 289 324 361<
UPDATE:
Ввод
squared(4, 33, 9)
Ожидаемый результат
16 25 49 64 100 121 169
196 256 289 361 400 484 529
625 676 784 841 961 1024
Вывод
16 25 49 64 100 121 169
196 256 289 361 400 484 529
625 676 784 841 961 1024
Сообщение
Line 1 differs: out:
>16 25 49 64 100 121 169<
corr:
>16 25 49 64 100 121 169<
UPDATE 2.0:
переделал код и теперь проходит только первые 6 тестов, а на 7 опять с пробелами что-то не так
def squared(start, end, div):
s = ''
for k in range(start, end + 1):
if (k ** 2 % div != 0):
s += str(k ** 2) + ' ' * (1 + len(str(end ** 2)) - len(str(k ** 2)))
if (k + 1) % 10 == start % 10:
s += '\n'
print(s)
Ответы (1 шт):
У вас ведь прямо в задании написано, каким образом напечатать 4 позиции, дополненные пробелами, используя f-строки. А в вашем способе печатается 5 позиций:
(str(k * k) + ' ' * 5)[0:5]
Это как минимум 5 пробелов за счёт ' ' * 5, и из них вырезается 5 символов срезом [0:5] (с 0-го по 4-й, т.е. 0,1,2,3,4 - 5 символов).
Используйте способ печати (формирования строки), указанный у вас в задании, т.е. в вашем коде будет так:
s += f'{k*k:<4}'
Что касается обновлённого вопроса. Скорее всего вам нужно не формировать строку вывода сразу, а накапливать результат в списке и потом уже выводить из списка накопленные числа, форматируя их определённым образом. Это вообще более правильный подход и в данном случае он должен помочь.

