arr = [[0,1,1], [1,1,1], [1,1,1]]
def main(arr):
 a = 0
 b = 0
 while a*b <= len(arr):
 if arr[a][b] == 0:
 arr[a][:] = 0
 arr[:][b] = 0
 else:
 continue
 a += 1
 b += 1
 
print(arr)
main(arr)
Ошибка:
[[0, 1, 1], [1, 1, 1], [1, 1, 1]]
Traceback (most recent call last):
 File "C:\Users\Admin\Desktop\task52.py", line 19, in 
 main(arr)
 File "C:\Users\Admin\Desktop\task52.py", line 9, in main
 if arr[a][b] == 0:
TypeError: 'int' object is not subscriptable
Задача: дана матрица N*M, состоящая из нулей и единиц. Необходимо преобразовать матрицу следующим образом: если элемент матрицы равен 0, то всю строку и весь столбец нужно «обнулить».
Входные данные: arr — матрица N*M, состоящая из нулей и единиц. N,M — натуральные числа от 1 до 10^6.
Вывод: матрица после преобразования.
	
	
	Python
	
		
		
								
				
								
				
			
	
		
			Нужна помощь в python
arr[a][:] = 0 может заменить на что-то более простое, к примеру
for i in range( 3 ):
arr[a][i] = 0
				
							for i in range( 3 ):
arr[a][i] = 0
Вот мой вариант:
"""
Задача: дана матрица N*M, состоящая из нулей и единиц.
Необходимо преобразовать матрицу следующим образом:
если элемент матрицы равен 0,
то всю строку и весь столбец нужно «обнулить».
Входные данные: arr — матрица N*M,
состоящая из нулей и единиц.
N,M — натуральные числа от 1 до 10^6.
"""
arr = [[0,1,1,1,1], [1,1,1,1,1], [1,1,1,0,1], [1,1,1,1,1]]
pos0 = []
print('До')
print(*arr, sep='\n')
for i, a in enumerate(arr):
~~~~for j, b in enumerate(a):
~~~~~~~~if b == 0:
~~~~~~~~~~~~pos0.append([i, j])
~~~~~~~~~~~~
for p in pos0:
~~~~arr[p[0]] = [0]*len(arr[0])
~~~~for i in range(len(arr)):
~~~~~~~~arr[i][p[1]] = 0
~~~~~~~~~~~~~~~~~~~~
print('После')
print(*arr, sep='\n')
Вывод
===============
До
[0, 1, 1, 1, 1]
[1, 1, 1, 1, 1]
[1, 1, 1, 0, 1]
[1, 1, 1, 1, 1]
После
[0, 0, 0, 0, 0]
[0, 1, 1, 0, 1]
[0, 0, 0, 0, 0]
[0, 1, 1, 0, 1]
>>>
PS
Уверен, что можно сделать как-нибудь поизящней, но по-моему такой вариант решения "в лоб", хорош тем, что мозги не надо наизнанку выворачивать, как в случае использования всех наворотов питона и запихивания всего кода в одну строку.
PS2
в
arr[p[0]] = [0]*len(arr[0])
len(arr[0]), потому, что предполагается, что все строки имеют одинаковую длину (по условию).
А если строки разной длины, то все равно нельзя просто
arr[p[0]] = [0]*len(arr[p[0]])
а надо еще проверять, чтобы за длину не вылезло.
				
							"""
Задача: дана матрица N*M, состоящая из нулей и единиц.
Необходимо преобразовать матрицу следующим образом:
если элемент матрицы равен 0,
то всю строку и весь столбец нужно «обнулить».
Входные данные: arr — матрица N*M,
состоящая из нулей и единиц.
N,M — натуральные числа от 1 до 10^6.
"""
arr = [[0,1,1,1,1], [1,1,1,1,1], [1,1,1,0,1], [1,1,1,1,1]]
pos0 = []
print('До')
print(*arr, sep='\n')
for i, a in enumerate(arr):
~~~~for j, b in enumerate(a):
~~~~~~~~if b == 0:
~~~~~~~~~~~~pos0.append([i, j])
~~~~~~~~~~~~
for p in pos0:
~~~~arr[p[0]] = [0]*len(arr[0])
~~~~for i in range(len(arr)):
~~~~~~~~arr[i][p[1]] = 0
~~~~~~~~~~~~~~~~~~~~
print('После')
print(*arr, sep='\n')
Вывод
===============
До
[0, 1, 1, 1, 1]
[1, 1, 1, 1, 1]
[1, 1, 1, 0, 1]
[1, 1, 1, 1, 1]
После
[0, 0, 0, 0, 0]
[0, 1, 1, 0, 1]
[0, 0, 0, 0, 0]
[0, 1, 1, 0, 1]
>>>
PS
Уверен, что можно сделать как-нибудь поизящней, но по-моему такой вариант решения "в лоб", хорош тем, что мозги не надо наизнанку выворачивать, как в случае использования всех наворотов питона и запихивания всего кода в одну строку.
PS2
в
arr[p[0]] = [0]*len(arr[0])
len(arr[0]), потому, что предполагается, что все строки имеют одинаковую длину (по условию).
А если строки разной длины, то все равно нельзя просто
arr[p[0]] = [0]*len(arr[p[0]])
а надо еще проверять, чтобы за длину не вылезло.
Похожие вопросы
- Нужна помощь по PYTHON,заранее спасибо
- Нужна помощь.(Язык программирования Python)
- Можете помочь! Нужен код для Python, что бы он заменял определенный текст в файле
- Python нужна помощь
- Очень нужна помощь с программой на Python! 1 курс матфака
- Python помощь в исправлении ошибок, очень нужна помощь!
- Для чего нужны аннотации в python?
- Помощь с Python Завершение после выполнения части кода
- Можно помощь в Python Коде.
- Срочная помощь по Python
 
			 
						