Найти - Пользователи
Полная версия: не могу решить задачу в python
Начало » Центр помощи » не могу решить задачу в python
1
kveuxx
Матрицу размером 5х10 заполните случайными двоичными цифрами (0 и 1). Определите номер строки с наибольшим количеством нулей.
xam1816
 from random import randint
matrix = [[randint(0, 1) for _ in range(10)] for _ in range(5)]
rows_min = [1]
min_sum = sum(matrix[0])
for n, i in enumerate(matrix[1:], 2):
    s = sum(i)
    if s < min_sum:
        rows_min = [n]
        min_sum = s
    elif s == min_sum:
        rows_min.append(n)
for i in matrix:
    print(i)
if len(rows_min) == 1:
    print(f'строка с наибольшим количеством нулей: {rows_min[0]}')
else:
    print(f'строки с наибольшим количеством нулей: {",".join(map(str, rows_min))}')
py.user.next
  
>>> import random
>>> import pprint
>>> 
>>> matrix = [[random.choice((0, 1)) for _ in range(10)] for _ in range(5)]
>>> pprint.pprint(matrix)
[[1, 0, 1, 1, 0, 1, 1, 1, 0, 0],
 [1, 0, 0, 1, 0, 0, 0, 1, 1, 1],
 [1, 0, 0, 0, 0, 1, 0, 0, 1, 1],
 [1, 0, 0, 1, 0, 0, 0, 0, 0, 0],
 [0, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
>>> 
>>> out = max(enumerate(matrix, 1), key=lambda i: i[1].count(0))[0]
>>> out
4
>>>

Для нескольких строк если надо
  
>>> import random
>>> import pprint
>>> 
>>> matrix = [[random.choice((0, 1)) for _ in range(10)] for _ in range(5)]
>>> pprint.pprint(matrix)
[[1, 1, 1, 0, 0, 0, 1, 0, 0, 1],
 [1, 1, 0, 0, 0, 1, 1, 0, 0, 0],
 [0, 0, 0, 0, 0, 1, 0, 1, 0, 1],
 [0, 1, 1, 0, 0, 1, 0, 0, 1, 1],
 [1, 1, 0, 1, 1, 1, 1, 1, 0, 0]]
>>> 
>>> zeros = tuple(i.count(0) for i in matrix)
>>> 
>>> out = tuple(n for n, i in enumerate(zeros, 1) if i == max(zeros))
>>> out
(3,)
>>>
  
>>> import random
>>> import pprint
>>> 
>>> matrix = [[random.choice((0, 1)) for _ in range(10)] for _ in range(5)]
>>> pprint.pprint(matrix)
[[0, 0, 0, 0, 1, 0, 1, 0, 0, 1],
 [0, 1, 0, 1, 1, 1, 0, 0, 0, 1],
 [0, 1, 0, 1, 0, 1, 1, 0, 1, 1],
 [1, 0, 1, 0, 0, 0, 0, 1, 1, 1],
 [1, 1, 0, 0, 0, 1, 0, 0, 0, 0]]
>>> 
>>> zeros = tuple(i.count(0) for i in matrix)
>>> 
>>> out = tuple(n for n, i in enumerate(zeros, 1) if i == max(zeros))
>>> out
(1, 5)
>>>

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB