Как можно убрать пробелы во вложенных циклах?
Есть вот такое задание:
Вводится натуральное число N (то есть, положительное, целое). Требуется создать двумерный (вложенный) список размером N x N элементов, состоящий из всех единиц, а затем, в последний столбец записать пятерки. Вывести этот список на экран в виде таблицы чисел, как показано в примере ниже. P.S. Будьте внимательны в конце строк пробелов быть не должно!
Sample Input: 4
Sample Output:
1 1 1 5
1 1 1 5
1 1 1 5
1 1 1 5
И моё решение этого задания: Без учёта P.S. Будьте внимательны в конце строк пробелов быть не должно! Вопрос такой: Как можно убрать пробелы в конце этой матрицы?
N = 4 # int(input())
s = []
for i in range(N):
i = 1
s.append([i] * N)
for x in s:
for j in x:
x[-1] = 5
print(j, end=" ")
print()
Ответы (5 шт):
Для корректного вывода можно использовать join:
for line in s:
print(' '.join(map(str, line)))
Можно вывод в одну строку сократить:
print('\n'.join(' '.join(map(str, line)) for line in s))
А x[-1] = 5 в вашем коде нужно вынести на уровень выше, т.е. в цикл for x in s
Однако я бы делал эту задачу как-то так:
N = 4 # int(input())
lst = [
[1]*(N-1) + [5] for _ in range(N)
]
for line in lst:
print(' '.join(map(str, line)))
А вот так выглядит однострочник:
print('\n'.join(' '.join(map(str, line)) for line in [[1]*(N-1)+[5] for _ in range(int(input()))]))
чисто в учебных целях:
l = [1]*N
s = [l]*N
l[N-1] = 5
for i in s:
print(*i,sep=' ')
По строчке на каждый пункт задания: tio.run
n = int(input())
a = [[1 for _ in range(n)] for _ in range(n)]
for x in a: x[-1] = -5
print("\n".join(" ".join(map(str, x)) for x in a))
