Форум сайта python.su
0
Дана матрица NxM. Вывести номер строки, содержащей максимальное число одинаковых элементов.
Я написал такой код:
from random import randint N = int(input()) M = int(input()) lst=[[randint(1, 9) for i in range(N)] for i in range(M)] for i in lst: print() for j in i: print (j, end=" ") kol=0 #количество одинаковых элементов равно нулю for i in range(N): #цикл по всем элементам матрицы for j in range(M): if lst[i][j]==lst[i][j+1]: #ЗДЕСЬ ВЫДАЕТСЯ ОШИБКА! я считал, что он так проверяет каждый последующий элемент в строке kol+=1 #накапливание print(kol)
Отредактировано FishHook (Июнь 28, 2019 17:24:43)
Офлайн
568
catauggieОшибка у вас потому, что если вы к индексу последнего элемента j прибавите единицу, то получите выход за пределы списка. Надо проверять, что такой элемент существует. Но, надо сказать, ваша программа вовсе не решает поставленной задачи.
Помогите иправить программу, чтоб она выводила индекс этой строки. Заранее большое спасибо
Офлайн
4
примерно так:
from random import randint N = int(input("кол столбцов")) M = int(input("кол строк")) lst=[[randint(1, 9) for i in range(N)] for i in range(M)] print(lst) for i in lst: print() for j in i: print (j, end=" ") kol=0 #количество одинаковых элементов равно нулю num_str=0# индекс строки for i in range(M): #цикл по всем элементам матрицы for j in range(N): kol_new=lst[i].count(lst[i][j])# подсчитываю кол-во определённого [i][j] символа в i-строке if kol_new>kol: # если больше, то kol=kol_new # заменить максимальное число num_str=i # и запомнить индекс строки в которой сейчас находимся print() print(num_str)
Офлайн