1) Плейлист этого курса вот здесь: th-cam.com/play/PLAma_mKffTOSY12JZS6l8lxKCpooPVcrn.html 2) Не обязательно использовать Jupyter Notebook. Можно использовать любую другую IDE, например PyCharm - www.jetbrains.com/ru-ru/pycharm/ Telegram: t.me/alishev_g Курс по GIT: www.udemy.com/course/git-alishev/?referralCode=71994763964B8E2E6A4E
Хочу выразить вам огромную, просто ОГРОМНУЮ благодарность за то, что вы всё это бесплатно сделали для и нас. Очень доходчиво. Пару месяцев назад, когда я только залез в IT, мне, что б понять и полностью освоить тему нужна была неделя(и то, если тема эта не сложная), и поэтому я даже не мог понять то, что вы объясняете, хотя сейчас, когда я почти закончил курс Питон для новичков, то смотрю новый материал у вас для себя с огромным кайфом !) Спасибо вам !!!
rows = [] columns = [] def matrix(n,m): i = 0 j = 0 while i < m: rows.append(columns) i += 1 while j < n: columns.append(0) j += 1 for a in rows: for b in a: print(b, end=' ') print() matrix(10,10)
Задачи хорошие, и бОльшая часть материала для их решения и правда была дана ранее, но тем не менее реальным новичкам решить их самостоятельно нереально. Сразу оговорюсь, что помощь гугла - уже априори не является "самостоятельным решением", на мой взгляд. Может я просто тупая такая и в моей голове что то не укладывается, но мне кажется вы не даете полной картины. Вы отлично объясняете, все понятно пока вы говорите. Но когда дело доходит до задач, то оказывается, что знаний не достаточно. Просто потому, что нет полной картины в голове новичка. Вот лично мне казалось в предыдущих уроках, что я полностью поняла синтаксис и смысл функции append. Я запомнила, что добавить к списку элемент это a.append(0), например. Но массив это другая структура, и синтаксис немного иной (с точки зрения новичка). Для меня a.append(0) (добавление элемента к обычному списку) и arr.append(inter_arr) (добавление целой строки к массиву) это разные выражения. Конечно посидев пару минут глядя в это выражение и осознав его, ты понимаешь, что "да, это ведь логично". Но посмотрев ваше решение я для себя поняла, что не додумалась бы до него наверное и через неделю. Во второй задаче выражение (len(arr) // 2) - откуда вообще взялось? Как до этого мог додуматься человек, впервые столкнувшийся с языком программирования? Это абсолютно новая возможность языка, о которой не упоминалось ранее ни в коем виде. Понятно, что вы пытаетесь приучать людей думать, это круто. Но, мне кажется, что надо шире показывать возможности новых функций. Показывать, что "вот со строками это выглядит так, а с массивами вот так, но о массивах поговорим позже". И тогда дойдя до массива, у новичка в голове будет инфа, что вот когда то вы об этом упоминали, можно посмотреть в более раннем уроке и применить на практике. Ну или хотя бы давать какие то подсказки о том, какую информацию можно поискать самостоятельно, чтобы дойти до решения. Новички понятия не имеют о том, какими возможностями обладает язык. К примеру, мне не понятно почему нет встроенной функции печати массива в виде таблицы без запятых и скобок, почему такую функцию надо писать самому? Это же совершенно очевидная и базовая функция, такая же как обычный print. И я полагаю если бы она существовала, вы бы ее показали. И так далее, в общем) Решения ваших задач часто подразумевают существование у новичка некой интуиции на наличие тех или иных возможностей языка, но у нас ее нет :) В общем, надеюсь мой посыл правильно понят и, возможно, поможет вам в будущем строить свои уроки еще более доступно для совсем зеленых)
Поддерживаю. В какой-то момент я перестал пытаться решать задачи самостоятельно потому как был уверен, что в решениях окажется материал который не проходили. И практически всегда так и получалось. Автор видимо имел в виду совсем не тех начинающих когда делал этот курс. Видимо имелось в виду начинающих конкретно в Python, а не начинающих в программировании.
спасибо большое, учусь, пересматриваю по несколько раз, всё доступно и понятно функцию с разворотом по фану сделал) def side_reflect(some_list): '''функция для чтения списка в обратном порядке''' some_list = some_list[::-1] return some_list def print_side_reflect_matrix(some_array): '''функция для отзеркаливания матрицы по вертикали''' for array in some_array: array = side_reflect(array) for element in array: print(element, end=' ') print() return some_array
555 лайков под этим видео, круто. Очень хорошо объясняешь. Долго в инете искал тутор по двумерным массивам, нигде нормально не объясняли. Спасибо, удачи!
Спасибо за отличный урок! Долго мучилась, но идея у меня была более простая - распечатать вложенные списки в обратном порядке. Признаюсь честно, что скомпилировать мысль получилось только после просмотра вашего решения. di = [[1, 2, 8, 9], [4, 8, 6, 5], [7, 8, 9, 3]] # исходный список def mass_di(m): # вложенная функция return m[::-1] def my_mirr(di): # рабочая функция for m in di: mass_di(m)
pr_m(di) # вывод исходной матрицы в печать print() # пробел для красоты my_mirr(di) # запускаем функцию pr_m(di) # распечатаем, что вышло в итоге
Хорошие курсы. Но для бегиннеров тяжело. Это скажем так для настойчивых бегиннеров) А так да, пили дальше! Единственно аудитория узкая. Лайк и прочее) и зачем подфункция если работает прямой обмен a, b = b, a?
ох по поводу бегиннеров я с тобой согласен. ибо же порой урок выглядит (особенно в части, где задачи), как преподаватель просто кодит, а мы смотрим. каждый символ в коде имеет принципиальное значение, и предполагается, что ученики, однажды узнав, что значит тот или иной символ, безошибочно начнут его применять, и нет никакой надобности проговаривать подробно, что, откуда и зачем взялось. возможно так и должно быть, не знаю. автору курса огромное спасибо!
да тут и для не бегинеров фиг поймешь. Мол надо было догадаться про аперант //. Была у меня мысля делить на 2 в начале, но потом ушел в другую сторону, и в общем нифига не получилось. Я думаю надо тчательно проговарить все операторы, их аргументы, методы применения, чтобы при появившеся задачи можно было уже использовать имеющийся опыт, а не сидеть пол часа пытаться втыкнуть, а оказывается мы там в уроках чет пропустили и без этого нифига не получится. Но то что есть задачи, это плюс. Без практики и самостоятельно работы, знания быстро выветриваются
Да, тяжко в этом плане, я раньше не кодил никогда, теорию понимаю нормально, дают задачу, а у меня просто мозг не работает в таком ключе и я просто не могу прийти к решению через всякие другие ходы как в видео. Но ничего начну с самых легких задач, чтобы начать понимать как все работает)
Я последнюю задачу вот так решил: def reverse_arr(x): for i in range(len(x)): x[i].sort(reverse=True) return matrix_print2(x) matrix_print2 (x) - функция из начала этого же урока для вывода шахматкой. все работает также. Вариант с решением через целочисленное деление не придумал бы и за неделю. А метод .sort запомнил просто когда смотрел в документации к питону основные фичи списков. Спасибо за урок!
Спасибо за ваш труд. Все очень понятно на простом Русском языке. Без лишней воды, туману и слов паразитов "эээээ", "нууууу", подковы гну и т. д. Слава Богу я что то начинаю понимать. Вы молодец!!! Респект!!! 🎉🎉🎉 делайте свое дело никого не слушайте. Решение одной и той же задачи может быть разным способом. Цель достигнута, код рабочий в чем проблема???
Задача 2: def mirror(arr): for g in range(len(arr)): for i in range(len(arr[0]) // 2): arr[g][i], arr[g][-i - 1] = arr[g][-i - 1], arr[g][i] return arr ПС. Спасибо за классные уроки и задачки!
Мне кажется второе задание легче первого p.s Они оба простые. Спасибо тебе, ты очень хорошо объясняешь, даже слишком для бесплатного курса на TH-cam. мой вариант решения 2 задачи (у меня функция только одна): def perevorot(big_mass): for mass in big_mass: for i in range(len(mass)//2): mass[i], mass[-i - 1] = mass[-i - 1], mass[i]
Сам примерно так же решил. В начале Наиль научил пользоваться отрицательными индексами с конца массива и обучил способу мгновенного свапа 2х и более значений средствами питона. И через пару укроков делает те же операции, но более сложным способом. Могу объяснить это только одним, между уроками прошло много времени и успел забыть какие фишки питона уже рассказал, а какие еще нет. А у нас между этими уроками разница несколько дней.
Решение на Задание №1 def create_2d_arr(n,m): my_arr = [] my_arr = [[0] * m for i in range(n)] return my_arr Решение на Задание №2 def mirror_arr(mas): for i in mas: for j in range(len(i)//2): i[j],i[len(i)-j-1] = i[len(i)-j-1], i[j] return mas Огромная благодарность автору канала за труды!
Или лыжи, или я: def swap_arr(array): for arr in array: temp_list = [] value = len(arr)-1 while value >= 0: temp_list.append(arr[value]) value -= 1 array[array.index(arr)] = temp_list Использовал обратный перебор индексов
Первое задание сделал, создав сначала список из нулей, а потом добавляя его в основной. Второе, кстати, без создания вспомогательной функции. Создал переменную для перебора списка с конца. №1 def create_2d_arr (m,n): list_m = [] list_n = [] for k1 in range (n): list_n.append (0) # создаём вложенный список, добавляя нули for k2 in range (m): list_m.append (list_n) # добавляем вложенный список в основной нужное количество раз return (list_m) №2 def create_1 (m1, n1): # создаём матрицу из m1 строк и n1 столбцов cr1 = 0 arr_1 = [] for i1 in range (m1): arr_2 = [] for j1 in range (n1): arr_2.append (cr1) cr1 += 1 arr_1.append (arr_2) return (arr_1) # Это, по сути, оформление условия задачи. Функция создаёт матрицы нужных размеров с возрастающими по порядку числами (последнее для упрощения восприятия) # Теперь решение: def create_2 (m1, n1): # зеркально отражаем слева направо матрицу, созданную в create_1
arr_1 = create_1 (m1, n1) for i2 in range (m1): t2 = -1 # создали переменную, чтобы идти по спискам в обратном направлении for j2 in range (n1): if j2*2 < len (arr_1[i2]): # условие, чтобы не перейти середину матрицы и не отразить её обратно arr_1 [i2][j2], arr_1 [i2][t2] = arr_1 [i2][t2], arr_1 [i2][j2] # обмен элементами t2 -= 1
return (arr_1) # Результат # Функцию print_matrix не вывожу - она взята из урока m1, n1 = 3, 6 print_matrix (create_1 (m1,n1)) print () print_matrix (create_2 (m1,n1)) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 5 4 3 2 1 0 11 10 9 8 7 6 17 16 15 14 13 12 # Работает при различных размерах матрицы. Спасибо за урок!
Народ ! Если что не поняли, можете посмотреть лекции Тимофея Хирьянова : Практика программирования на Питон 3. Сам начинал учить Питон там. Всего 14 лекций. Обязательно посмотреть, хотя б первую половину. Хоть 7, 8 лекций. Или просто спросите у Наиля, он с радостью ответит !
Советую ! Ну а что там не понял подчерпнул у Наиля. Мне лично Наиля легче понимать, ведь он расжевал и в рот положил, а там физтех. Но, все равно там все предельно понятно. И то, что я там некоторые вещи не понимал не значит, что там все непонятно или я туп. Мне 20 марта только 13 стукнуло. И, к тому же, меня тянет к автомобилям. А вобще, то по точным наукам я - спец в классе. Даже по городу участвовал с матеши и 3 место занял. Ну и вобще, с математики( алгебра, геометрия) во всяких олимпиадах побеждал ( например, кенгуру). Нет, я не хвалюсь, да и не суть. Просто хочу сказать, что может всякий и, что я не все понимаю, ведь не совсем в теме, но и не тупой. Короче, удачного обучения и не забудьте поддержать Наиля лайкосом, а лучше - и подпиской !
Последнюю задачу сначала решил так: def mirror_swap(array2d): for arr in array2d: arr.reverse() return array2d Потом решил, что такое решение не подходит для качественного усвоения материала. Подумал... и пришел к такому решению: def mirror_swap(array2d): for arr in array2d: for el in range(len(arr) // 2): arr[el], arr[-1-el] = arr[-1-el], arr[el] return array2d Каково было мое удивление, когда я впервые оказался близок к вашему алгоритму! Только я несколько иначе вычисляю индекс второго элемента в паре. Тут я вспомнил ваш урок по спискам, где вы говорили, что запись list[-1] соответствует последнему элементу в списке! Огромное вам спасибо!!!!!!!!!
Возможно где-то в комментах уже есть: 2ая задача проще: def reverse_list(arr): for item in arr: item.reverse() # здесь arr - двумерный массив, соответственно item в цикле - каждый подмассив, который встроенной функцией переворачиваем
Уроки- огонь!!! Мои три варианта решения задачи по зеркальному отображению матрицы(создано по принципу скопировать- вставить, все работает): #Вариант 1 #Решение задачи через функцию reverse mirrorList=[[1, 2, 3], [4, 5, 6], [7, 8,9] ] def mirror(List): for i in range(len(List)): a= List[i] a.reverse() List[i]=a return List
mirror(mirrorList) #Вариант 2 #решение задание через создание доп списка вручную mirrorList1=[[1, 2, 3], [4, 5, 6], [7, 8,9] ] for i in range(len(mirrorList1)): tempList=[] j=-1 while j>=-len(mirrorList1[i]): # переворачиваем список tempList.append(mirrorList1[i][j]) j-=1 mirrorList1[i]=tempList print(mirrorList1) #Вариант 3 # решение без доп списков и вложенных массивов mirrorList1=[[1, 2, 3, 5], [4, 5, 6], [7, 8,9] ] for i in mirrorList1: last=-1 for j in range(round(len(i)/2)): temp=i[last] i[last], i[j]= i[j], i[last] last-=1 print(mirrorList1)
Не знаю когда именно, но в питоне появилась возможность элегантно сделать свап для списков и для других типов данных, так мы можем сократить код для зеркального отображения: def mirror_2d_arr(arr_2d): for row in arr_2d: n=len(row) for i in range(n//2): (row[i], row[n-1-i]) = (row[n-1-i], row[i]) return arr_2d #для вызова, если удобно Спасибо за уроки, они пригодятся многим, доступные и понятные!
Ура! Первое задание, из курса, которое сам сделал. Поставил на паузу и сделал отзеркаливание массива. Так же использовал целочисленное деление //. Спасибо и от меня за уроки.
Показалось, что у меня более бестолковый способ решения первого задания, но все тесты с разными аргументами функция прошла успешно:) def arr2(m, n): for array in range(m): for el in range(n): print(0, end=" ") print()
комментарий просто для рейтинга) комбинация двух задач - сначала создается список с заданными размерами, а потом он отзеркаливается def createarray (x,y): zeroarray=[] for t in range (x): tempo=[] for length in range(y): tempo.append(length) zeroarray.append(tempo) return zeroarray arr1=createarray(5,5) print("source matrix") for m in range(len(arr1)): print (arr1[m]) for i in range(len(arr1)): for j in range(len(arr1)//2): temp=len(arr1)-j-1 arr1[i][j],arr1[i][temp]=arr1[i][temp],arr1[i][j] print("after mirroring") for m in range(len(arr1)): print (arr1[m])
arr_2d = [['Спасибо'], [alishev], [за помощь!]] def print_matrix(arr_2d): for arr in arr_2d: for el in arr: print(el, end = ' ') print() print_matrix(arr_2d) ________________________________________ Вывод: Спасибо alishev за помощь!
arr_2d = [['Спасибо'], ['alishev'], ['за помощь!']] def print_matrix(arr_2d): for arr in arr_2d: for el in arr: print(el, end = ' ') print() print_matrix(arr_2d)
Огромное спасибо, что так понятно объясняешь, другие так не могут. С нетерпением жду следующих уроков. Хочется что бы они выходили как можно чаще. С первой зарплаты программиста задоначу 5 % . Только не забудь добавить кнопку спонсировать
спасибо тебе огромное за твои уроки !!!! ТЫ ЛУЧШИЙ !!! жду с нетерпением новых уроков по питону!!! Так же очень интересно было бы посмотреть серию видео: 1. Python+PyGame для начинающих, 2. Python + OpenGl 3. Python + Kivy смотрел бы с удовольствием!!!!
Не знал как сделать целочисленное деление. Поэтому сделал без деления. def mirror_matrix2d(matrix): for string in matrix: len_str = len(string) - 1 for left in range(len_str): right = len_str - left; if left < right: string[left], string[right] = string[right], string[left] else: break
Нужно просто гуглить реализации различных решений. И стараться вникать в них подробно, желательно первое время в более простые из найденых. Все приходит с практикой. А практика лучше на мой взгляд строится на опыте различных реализаций в первое время. Плюс доп источники книги, статьи и другие различные видео по питону.
Тоже самое) как говорил мой знакомый татарин «я как собака, что говорят по татарски понимаю а говорить немого»:) не хватает практики) лично я начал выписывать функции и синтаксис, как минимум проще потом искать, чем ролики перематывать)
#сначала создал 2-х мерный массив, потом стал его "печатать ")00)) def create_2d (x,n): a = 0 b = 0 a1 = [] b1 = [] while a < n : a1.append(0) a +=1 while b < x: b1.append(a1) b +=1 for i in range(len(b1)): for j in range(len(b1[i])): print (b1[i][j],end = " ") print () create_2d(10,5)
задачи реально заставляют думать я пытался найти подсказки в интернете по поводу второй задачи и сделал def ren_matrix(l): return l[::-1] print(ren_matrix(text)) в итоге всетаки неправильно ) но зато подумал) хорошо объясняешь спасибо за уроки!
2 задание import random a = [random.randint(-19, 19) for i in range(10)] print(a) for i in range(len(a)): if a[i] > 0: first_pos_index = i break else: first_pos_index = len(a) a[:first_pos_index] = [100] * first_pos_index print(a)
Не работает, почему? def create_2d_arr(m, n): arr1 = [ ] for i in range(m): arr2 = [ ] for el in range(n): arr2.append(0) arr1.append(arr2) return arr1 arr_5_10 = create_2d_arr(5, 10) print(arr_5_10) если пишу принт матрикс выдает что не опознанная переменная
Вторую задачу сам не решил, немного запутался. #Задача 1 def create2dArr(m, n): arr2d = [] for i in range(m): arr2d.append([]) for j in range(n): arr2d[i].append(0) return arr2d def print_matrix(l): for i in range(len(l)): for j in range(len(l[i])): print(l[i][j], end=" ") print()
Сначала "захардкодил" вторую задачу, идя по верному пути, но моя версия работала только с матрицами с 3-мя столбцами. Потом прослушал условие внимательнее и понял, что скрипт должен работать для любых матриц, поэтому закодил вот это (про себя подумал, пфф, так еще проще)- def mirr_matr(х): for m in Ali_list: m=m.reverse() return Ali_list def print_matr(x): for arr in x: for element in arr: print(element, end=" ") print() Ali_list = [[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]] print_matr(Ali_list) print() print() print_matr(mirr_matr(Ali_list))
Последнюю задачку можно было решить так, правильно? По-моему так даже короче и проще: def print_matrix_mirror(arr_2d): for arr in arr_2d: print(arr[::-1]) print_matrix_mirror(arr_2d)
Что то в этом уроке ты прям усложнил решение, я сделал покомпактнее вот примеры. Задача на заполнение нулями массива с выбранными параметрами: def massiv_2d (m, n): mass = [[ 0 for i in range(m)] for j in range(n) ] print (mass) massiv_2d (6,5) Задача на зеркало: mas=[[1,2,3], [4,5,6], [7,8,9]] print_mas(mas) print("Зеркало масива") def zerkalo (mas): for i in range(len(mas)): t=len(mas[i])-1 while t>=0: print (mas[i][t], end = " ") t-=1 print () zerkalo(mas)
Добрый день. Когда пытаешься делать как вы в программе Pycharm, вызывать элемент по индексу, не получается вызывать!!! Пишет вот такое определение no newline at end of life
Здравствуйте. А я по первой задаче не могу понять, каким образом в варианте решения Наиля мы получаем на выходе именно таблицу. Мой вариант выглядит так: m = int(input("Введите кол-во строк матрицы:")) n = int(input("Введите кол-во столбцов матрицы:")) def create(m,n): arr = [ ] for mas in range(m): arr.append([ ]) for el in range(n): arr[mas].append(0) print(arr[mas][el], end = " ") print() create(m,n)
вышло как-то так, зато работает def vunc(any_sheet): save_list = [] for i in any_sheet: list3 = [] for j in i[::-1]: list3.append(j) save_list.append(list3) def func(a): for l in range(len(save_list)): for t in range(len(save_list[l])): print(save_list[l][t], end = ' ') print() func(save_list)
Добрый день! Прошу подсказать какие-нибудь видео-лекции или книги для изучения питона. Этот курс очень нравится, но ждать столько времени новых видео нереально(
Курсы от Coursera Основы программирования на Python - от Высшей Школы Экономики Математика и Python для анализа данных - совместный курс от МФТИ и Яндекс Программирование на Python Specialization - курс от МФТИ и mail.ru для более продвинутых Курс Python от Stepic, а также его продолжение Курс Python от Lektorium Курс Python от Intuit (и ещё один) Курс Python от Hexlet Лекции ВМК МГУ Курс с задачами от Stepic, где сложность задаваемых задач зависит от вашего уровня подготовки pythonworld.ru/kursy/free.html
Добрый день! подскажите пожалуйста, не понимаю один момент. почему когда я пишу код с нуля, то при выводе "print_matrix..." выдает ошибку. def create_2d_arr(m, n): arr_2d = []
for i in range(m): internal_arr = []
for j in range(n): internal_arr.append(0)
arr_2d.append(internal_arr)
return arr_2d arr_5_10 = create_2d_arr(5, 10) print_matrix(arr_5_10) --------------------------------------------------------------------------- NameError Traceback (most recent call last) Input In [3], in () ----> 1 print_matrix(arr_5_10) NameError: name 'print_matrix' is not defined
Вторая задача def matrix_mirror(my_list): for i in range(len(my_list)): k=-1 for j in range(len(my_list[i])): if k>-len(my_list[i]): my_list[i][j], my_list[i][j+k] = my_list[i][j+k], my_list[i][j] k-=2
В первой задаче у меня чуть другое решение, и даже короче: def create_2d_array(m, n): array=[] for i in range(m): array.append([]) for j in range(n): array[i].append(0) return array
@@alishevN да так тоже делал arr_5_10 = create_2d_arr(5, 10) print_matrix(arr_5_10) подчеркивает print_matrix и пишет name 'print_matrix' is not defined может в PyCharm подругому вводить
И тут я понимаю, что у меня проблемы с абстрактным мышлением. Почему-то не выводятся строки в столбик в первом задании. Всё идет одной строкой. А при print_matrix() выдает NameError. Что не так, не понимаю. def create_2d_arr(m, n): arr_2d = []
задачу 2 лучше решать так по моему arr_2d = [[1, 2, 3, 5], [6, 7, 8, 10], [11, 12, 13, 14]] def print_m(arr_2d): for arr in range(len(arr_2d)): arr_2d[arr].reverse() for j in range(len(arr_2d[arr])): print(arr_2d[arr][j], end=' ') print() print_m(arr_2d) тогда можно будет создавать бесконечное множество списков и списков внутри списка)
Решил вторую задачу методом буфера, по моему прикольно получилось) : def printMatrixV1(l_arr2d): for row in range(len(l_arr2d)): for column in range(len(l_arr2d[row])): print(l_arr2d[row][column], end = ' ') print() arr2d = [[1,2,3,4],[8,5,6,56],[43,7,8,9],[45,434,47,78]] m = 4 print("Original matrix:") printMatrixV1(arr2d) print("Reflected matrix:") for i in range(m): temp_list = [] for j in range(len(arr2d[i]) - 1,-1,-1): temp_list.append(arr2d[i][j]) arr2d[i] = temp_list printMatrixV1(arr2d)
вторая задача решается проще - через reversed или через метод reverse from typing import List array = [[1,2,3], [4,5,6], [7,8,9] ] def mirror_array(array:List): for element in range(len(array)): array[element] = list(reversed(array[element])) return array print(array) print(' Mirror array ') print(mirror_array(array))
Здравствуйте. Почему копирование списка в 2д список не происходит например, ведь меняется только место объявления вложенного списка но и при этом каждую итерацию основного списка вложенный очищается: import random def print_matrix(x): for i in x: print (i) def create_2d_arr(m,n): arr_2d=[] arr = [] for i in range(m): for j in range(n): arr.append(random.random()) arr_2d.append(arr) arr.clear() return arr_2d print_matrix(create_2d_arr(7,5) )
Задача 2: (С красивым выводом в консоль без запятых) print("Введите кол-во строк ="); m = int(input()) print("Введите кол-во столбцов ="); n = int(input()) if n == m: a = [] h = 1 for i in range(m): d = [] for k in range(n): d.append(h) h += 1 a.append(d) for arr in a: for el in arr: print(el, end = " ") print() for j in range(len(a)): for l in range(len(a[j])): a[j].sort(reverse=True) print() for arr1 in a: for el1 in arr1: print(el1, end = " ") print() else: print("Не Удовлетворяет условию задачи")
НЕ ПОНИМАЮ, КТО за все старания Наиля ставит ему дизлайк !? Так и будут змейку до конца жизни программировать ! Лично мне - норм, ведь все на высшем уровне. Если уже не поняли или что - то не так, просто напишите в комментах. Наиль обязательно ответит ! За что дизлайк - то !?
Осилил 1-ю задачу: a=[] b=[] def func(stolb,str): for i in range(stolb): b.append(i) b[i]=b[i]*0 for j in range(str): a.append(b) print("Введите количество столбцов:") stolb=int(input()) print("Введите количество строк:") str=int(input()) func(stolb,str) def func(a): for m in range(len(a)): for n in range(len(a[m])): print(a[m][n], end=" ") print() func(a)
Я сделал чуть по др. вторую задачу (вроде тоже работает): a = [[1, 2, 3, 5, 6], [4, 5, 6, 4, 3], [7, 8, 9, 5, 9]] def mirror_2(a): for i in range(len(a)): for j in range(len(a[0]) - 1, -1, -1): print(a[i][j], end=' ') print() mirror_2(a)
Сначала решил задачу, но потом захотелось всё автоматизировать до конца))) def create_2d_arr(m,n): #создание матрицы arr_2d = [] #создаём массив for i in range(m): internal_array = []#создаёт m пустых массивов for j in range(n): internal_array.append(0)#добавляет в пустые массивы нули n раз arr_2d.append(internal_array)# добавляет созданные массивы в основной массив. q = 1 #вставляем числа от 1 до n вместо нулей for x in range(len(arr_2d)): for z in range(n): arr_2d[x][z] += q q += 1 return arr_2d ############################################################### def reverse_arr(array_n_m): #переворачиваем матрицу for i in range((len(array_n_m))): array_n_m[i].reverse() return array_n_m ############################################################### def print_matrix(n): #для преобразования матрицы в нормальный вид for i in range(len(n)):#проходим по спискам for j in range(len(n[i])): #проходим по элементам print(n[i][j], end = ' ') print() m = int(input())#вводим m при запуске программы n = int(input())#вводим n при запуске программы result = reverse_arr(create_2d_arr(m,n)) print_matrix(result)
А не рациональнее будет написать зеркальное отображение массива таким образом (если нет, скажите почему): arr_1=[[11,12,13,14],[21,22,23,24],[31,32,33,34]] arr_2=copy.deepcopy(arr_1) print(arr_1) for i in range(len(arr_1)): c = len(arr_1[i]) - 1 for j in range(len(arr_1[i])): arr_2[i][j]=arr_1[i][c-j] print(arr_2)
1) Плейлист этого курса вот здесь: th-cam.com/play/PLAma_mKffTOSY12JZS6l8lxKCpooPVcrn.html
2) Не обязательно использовать Jupyter Notebook. Можно использовать любую другую IDE, например PyCharm - www.jetbrains.com/ru-ru/pycharm/
Telegram: t.me/alishev_g
Курс по GIT: www.udemy.com/course/git-alishev/?referralCode=71994763964B8E2E6A4E
Привет, если увидишь этот сообщение, прокомментируй, пожалуйста, мое решение:
def mirrow_arr(orig_arr):
for el in orig_arr:
for i in range(len(orig_arr) // 2):
el[i], el[-1-i] = el[-1-i], el[i]
return orig_arr
Ехал список через список, видит список - список список. Сунул список список в список: список список список список.
Я так долго ждал курсы по питону , что стал джуном php )
ахахаха)))
@Leon Bezbojnik что за бред
Хочу выразить вам огромную, просто ОГРОМНУЮ благодарность за то, что вы всё это бесплатно сделали для и нас. Очень доходчиво.
Пару месяцев назад, когда я только залез в IT, мне, что б понять и полностью освоить тему нужна была неделя(и то, если тема эта не сложная), и поэтому я даже не мог понять то, что вы объясняете, хотя сейчас, когда я почти закончил курс Питон для новичков, то смотрю новый материал у вас для себя с огромным кайфом !)
Спасибо вам !!!
rows = []
columns = []
def matrix(n,m):
i = 0
j = 0
while i < m:
rows.append(columns)
i += 1
while j < n:
columns.append(0)
j += 1
for a in rows:
for b in a:
print(b, end=' ')
print()
matrix(10,10)
Спасибо за твои старание. Очень интересно. Ждем продолжения. С наступающим тебя бро
Спасибо!
@@alishevN А когда же продолжение?
Задачи хорошие, и бОльшая часть материала для их решения и правда была дана ранее, но тем не менее реальным новичкам решить их самостоятельно нереально. Сразу оговорюсь, что помощь гугла - уже априори не является "самостоятельным решением", на мой взгляд.
Может я просто тупая такая и в моей голове что то не укладывается, но мне кажется вы не даете полной картины. Вы отлично объясняете, все понятно пока вы говорите.
Но когда дело доходит до задач, то оказывается, что знаний не достаточно. Просто потому, что нет полной картины в голове новичка.
Вот лично мне казалось в предыдущих уроках, что я полностью поняла синтаксис и смысл функции append. Я запомнила, что добавить к списку элемент это a.append(0), например. Но массив это другая структура, и синтаксис немного иной (с точки зрения новичка).
Для меня
a.append(0) (добавление элемента к обычному списку) и
arr.append(inter_arr) (добавление целой строки к массиву)
это разные выражения.
Конечно посидев пару минут глядя в это выражение и осознав его, ты понимаешь, что "да, это ведь логично". Но посмотрев ваше решение я для себя поняла, что не додумалась бы до него наверное и через неделю.
Во второй задаче выражение (len(arr) // 2) - откуда вообще взялось? Как до этого мог додуматься человек, впервые столкнувшийся с языком программирования? Это абсолютно новая возможность языка, о которой не упоминалось ранее ни в коем виде.
Понятно, что вы пытаетесь приучать людей думать, это круто. Но, мне кажется, что надо шире показывать возможности новых функций. Показывать, что "вот со строками это выглядит так, а с массивами вот так, но о массивах поговорим позже". И тогда дойдя до массива, у новичка в голове будет инфа, что вот когда то вы об этом упоминали, можно посмотреть в более раннем уроке и применить на практике. Ну или хотя бы давать какие то подсказки о том, какую информацию можно поискать самостоятельно, чтобы дойти до решения.
Новички понятия не имеют о том, какими возможностями обладает язык. К примеру, мне не понятно почему нет встроенной функции печати массива в виде таблицы без запятых и скобок, почему такую функцию надо писать самому? Это же совершенно очевидная и базовая функция, такая же как обычный print. И я полагаю если бы она существовала, вы бы ее показали. И так далее, в общем)
Решения ваших задач часто подразумевают существование у новичка некой интуиции на наличие тех или иных возможностей языка, но у нас ее нет :)
В общем, надеюсь мой посыл правильно понят и, возможно, поможет вам в будущем строить свои уроки еще более доступно для совсем зеленых)
Спасибо за обратную связь
Согласен. Решение задач действительно требует знаний приёмов программирования, которые в предыдущих видео не объяснялись. Я тоже не смог решить сам.
Поддерживаю. В какой-то момент я перестал пытаться решать задачи самостоятельно потому как был уверен, что в решениях окажется материал который не проходили. И практически всегда так и получалось. Автор видимо имел в виду совсем не тех начинающих когда делал этот курс. Видимо имелось в виду начинающих конкретно в Python, а не начинающих в программировании.
спасибо большое, учусь, пересматриваю по несколько раз, всё доступно и понятно
функцию с разворотом по фану сделал)
def side_reflect(some_list):
'''функция для чтения списка в обратном порядке'''
some_list = some_list[::-1]
return some_list
def print_side_reflect_matrix(some_array):
'''функция для отзеркаливания матрицы по вертикали'''
for array in some_array:
array = side_reflect(array)
for element in array:
print(element, end=' ')
print()
return some_array
вы мне очень помогаете готовиться к урокам информатики,спасибо большое!мастер своего дела.
555 лайков под этим видео, круто. Очень хорошо объясняешь. Долго в инете искал тутор по двумерным массивам, нигде нормально не объясняли. Спасибо, удачи!
Жирнейший like и подписка. Для меня лучший видеурок по многомерным массивам и заодно циклам.
Спасибо за отличный урок! Долго мучилась, но идея у меня была более простая - распечатать вложенные списки в обратном порядке. Признаюсь честно, что скомпилировать мысль получилось только после просмотра вашего решения.
di = [[1, 2, 8, 9], [4, 8, 6, 5], [7, 8, 9, 3]]
# исходный список
def mass_di(m):
# вложенная функция
return m[::-1]
def my_mirr(di):
# рабочая функция
for m in di:
mass_di(m)
pr_m(di)
# вывод исходной матрицы в печать
print()
# пробел для красоты
my_mirr(di)
# запускаем функцию
pr_m(di) # распечатаем, что вышло в итоге
Хорошие курсы. Но для бегиннеров тяжело. Это скажем так для настойчивых бегиннеров) А так да, пили дальше! Единственно аудитория узкая. Лайк и прочее)
и зачем подфункция если работает прямой обмен a, b = b, a?
кому ж нынче нужны ненастойчивые бегиннеры? :)
ох по поводу бегиннеров я с тобой согласен. ибо же порой урок выглядит (особенно в части, где задачи), как преподаватель просто кодит, а мы смотрим. каждый символ в коде имеет принципиальное значение, и предполагается, что ученики, однажды узнав, что значит тот или иной символ, безошибочно начнут его применять, и нет никакой надобности проговаривать подробно, что, откуда и зачем взялось. возможно так и должно быть, не знаю. автору курса огромное спасибо!
да тут и для не бегинеров фиг поймешь. Мол надо было догадаться про аперант //. Была у меня мысля делить на 2 в начале, но потом ушел в другую сторону, и в общем нифига не получилось. Я думаю надо тчательно проговарить все операторы, их аргументы, методы применения, чтобы при появившеся задачи можно было уже использовать имеющийся опыт, а не сидеть пол часа пытаться втыкнуть, а оказывается мы там в уроках чет пропустили и без этого нифига не получится. Но то что есть задачи, это плюс. Без практики и самостоятельно работы, знания быстро выветриваются
Да, тяжко в этом плане, я раньше не кодил никогда, теорию понимаю нормально, дают задачу, а у меня просто мозг не работает в таком ключе и я просто не могу прийти к решению через всякие другие ходы как в видео. Но ничего начну с самых легких задач, чтобы начать понимать как все работает)
@@ArGoSpks бро, это у всех так, походу
Я последнюю задачу вот так решил:
def reverse_arr(x):
for i in range(len(x)):
x[i].sort(reverse=True)
return matrix_print2(x)
matrix_print2 (x) - функция из начала этого же урока для вывода шахматкой. все работает также. Вариант с решением через целочисленное деление не придумал бы и за неделю. А метод .sort запомнил просто когда смотрел в документации к питону основные фичи списков.
Спасибо за урок!
Спасибо за ваш труд. Все очень понятно на простом Русском языке. Без лишней воды, туману и слов паразитов "эээээ", "нууууу", подковы гну и т. д. Слава Богу я что то начинаю понимать. Вы молодец!!! Респект!!! 🎉🎉🎉 делайте свое дело никого не слушайте. Решение одной и той же задачи может быть разным способом. Цель достигнута, код рабочий в чем проблема???
Задача 2:
def mirror(arr):
for g in range(len(arr)):
for i in range(len(arr[0]) // 2):
arr[g][i], arr[g][-i - 1] = arr[g][-i - 1], arr[g][i]
return arr
ПС. Спасибо за классные уроки и задачки!
Хорошо объясняешь. Когда про классы видос запилишь?
Мне кажется второе задание легче первого
p.s Они оба простые. Спасибо тебе, ты очень хорошо объясняешь, даже слишком для бесплатного курса на TH-cam.
мой вариант решения 2 задачи (у меня функция только одна):
def perevorot(big_mass):
for mass in big_mass:
for i in range(len(mass)//2):
mass[i], mass[-i - 1] = mass[-i - 1], mass[i]
Сам примерно так же решил.
В начале Наиль научил пользоваться отрицательными индексами с конца массива и обучил способу мгновенного свапа 2х и более значений средствами питона. И через пару укроков делает те же операции, но более сложным способом.
Могу объяснить это только одним, между уроками прошло много времени и успел забыть какие фишки питона уже рассказал, а какие еще нет. А у нас между этими уроками разница несколько дней.
Решение на Задание №1
def create_2d_arr(n,m):
my_arr = []
my_arr = [[0] * m for i in range(n)]
return my_arr
Решение на Задание №2
def mirror_arr(mas):
for i in mas:
for j in range(len(i)//2):
i[j],i[len(i)-j-1] = i[len(i)-j-1], i[j]
return mas
Огромная благодарность автору канала за труды!
Или лыжи, или я:
def swap_arr(array):
for arr in array:
temp_list = []
value = len(arr)-1
while value >= 0:
temp_list.append(arr[value])
value -= 1
array[array.index(arr)] = temp_list
Использовал обратный перебор индексов
жиза, только по другому реализовал
Спасибо, после урока, получилось немного лучше уложить в голове матрицы и их обход!
Первое задание сделал, создав сначала список из нулей, а потом добавляя его в основной.
Второе, кстати, без создания вспомогательной функции. Создал переменную для перебора списка с конца.
№1
def create_2d_arr (m,n):
list_m = []
list_n = []
for k1 in range (n):
list_n.append (0) # создаём вложенный список, добавляя нули
for k2 in range (m):
list_m.append (list_n) # добавляем вложенный список в основной нужное количество раз
return (list_m)
№2
def create_1 (m1, n1): # создаём матрицу из m1 строк и n1 столбцов
cr1 = 0
arr_1 = []
for i1 in range (m1):
arr_2 = []
for j1 in range (n1):
arr_2.append (cr1)
cr1 += 1
arr_1.append (arr_2)
return (arr_1)
# Это, по сути, оформление условия задачи. Функция создаёт матрицы нужных размеров с возрастающими по порядку числами (последнее для упрощения восприятия)
# Теперь решение:
def create_2 (m1, n1): # зеркально отражаем слева направо матрицу, созданную в create_1
arr_1 = create_1 (m1, n1)
for i2 in range (m1):
t2 = -1 # создали переменную, чтобы идти по спискам в обратном направлении
for j2 in range (n1):
if j2*2 < len (arr_1[i2]): # условие, чтобы не перейти середину матрицы и не отразить её обратно
arr_1 [i2][j2], arr_1 [i2][t2] = arr_1 [i2][t2], arr_1 [i2][j2] # обмен элементами
t2 -= 1
return (arr_1)
# Результат
# Функцию print_matrix не вывожу - она взята из урока
m1, n1 = 3, 6
print_matrix (create_1 (m1,n1))
print ()
print_matrix (create_2 (m1,n1))
0 1 2 3 4 5
6 7 8 9 10 11
12 13 14 15 16 17
5 4 3 2 1 0
11 10 9 8 7 6
17 16 15 14 13 12
# Работает при различных размерах матрицы.
Спасибо за урок!
Народ ! Если что не поняли, можете посмотреть лекции Тимофея Хирьянова : Практика программирования на Питон 3. Сам начинал учить Питон там. Всего 14 лекций. Обязательно посмотреть, хотя б первую половину. Хоть 7, 8 лекций. Или просто спросите у Наиля, он с радостью ответит !
Советую ! Ну а что там не понял подчерпнул у Наиля. Мне лично Наиля легче понимать, ведь он расжевал и в рот положил, а там физтех. Но, все равно там все предельно понятно. И то, что я там некоторые вещи не понимал не значит, что там все непонятно или я туп. Мне 20 марта только 13 стукнуло. И, к тому же, меня тянет к автомобилям. А вобще, то по точным наукам я - спец в классе. Даже по городу участвовал с матеши и 3 место занял. Ну и вобще, с математики( алгебра, геометрия) во всяких олимпиадах побеждал ( например, кенгуру). Нет, я не хвалюсь, да и не суть. Просто хочу сказать, что может всякий и, что я не все понимаю, ведь не совсем в теме, но и не тупой. Короче, удачного обучения и не забудьте поддержать Наиля лайкосом, а лучше - и подпиской !
Последнюю задачу сначала решил так:
def mirror_swap(array2d):
for arr in array2d:
arr.reverse()
return array2d
Потом решил, что такое решение не подходит для качественного усвоения материала. Подумал... и пришел к такому решению:
def mirror_swap(array2d):
for arr in array2d:
for el in range(len(arr) // 2):
arr[el], arr[-1-el] = arr[-1-el], arr[el]
return array2d
Каково было мое удивление, когда я впервые оказался близок к вашему алгоритму! Только я несколько иначе вычисляю индекс второго элемента в паре. Тут я вспомнил ваш урок по спискам, где вы говорили, что запись list[-1] соответствует последнему элементу в списке!
Огромное вам спасибо!!!!!!!!!
Возможно где-то в комментах уже есть: 2ая задача проще:
def reverse_list(arr):
for item in arr:
item.reverse()
# здесь arr - двумерный массив, соответственно item в цикле - каждый подмассив, который встроенной функцией переворачиваем
Будто талант обяснять, чесное слововсе понятно!
А мне непонятно. :(
@@derekcollins9739 мне уже какой урок не понятно
@@derekcollins9739 Пипец, я не один такой
Как тебе такой вариант решения?
def print_2d(arr):
for i in arr:
k = i[::-1]
for j in k:
print(j, end=' ')
print()
print_2d(arr_2d)
Уроки- огонь!!!
Мои три варианта решения задачи по зеркальному отображению матрицы(создано по принципу скопировать- вставить, все работает):
#Вариант 1
#Решение задачи через функцию reverse
mirrorList=[[1, 2, 3],
[4, 5, 6],
[7, 8,9]
]
def mirror(List):
for i in range(len(List)):
a= List[i]
a.reverse()
List[i]=a
return List
mirror(mirrorList)
#Вариант 2
#решение задание через создание доп списка вручную
mirrorList1=[[1, 2, 3],
[4, 5, 6],
[7, 8,9]
]
for i in range(len(mirrorList1)):
tempList=[]
j=-1
while j>=-len(mirrorList1[i]): # переворачиваем список
tempList.append(mirrorList1[i][j])
j-=1
mirrorList1[i]=tempList
print(mirrorList1)
#Вариант 3
# решение без доп списков и вложенных массивов
mirrorList1=[[1, 2, 3, 5],
[4, 5, 6],
[7, 8,9]
]
for i in mirrorList1:
last=-1
for j in range(round(len(i)/2)):
temp=i[last]
i[last], i[j]= i[j], i[last]
last-=1
print(mirrorList1)
Для создания массива нулей, можно использовать [0]*5, а для двумерного [[0]*10]*5
слыш, купи!
Сделал вторую задачу с циклом for и list.reverse(). Но Ваше решение просто гениально
С этой функцией всё облегчается
Не знаю когда именно, но в питоне появилась возможность элегантно сделать свап для списков и для других типов данных, так мы можем сократить код для зеркального отображения:
def mirror_2d_arr(arr_2d):
for row in arr_2d:
n=len(row)
for i in range(n//2):
(row[i], row[n-1-i]) = (row[n-1-i], row[i])
return arr_2d #для вызова, если удобно
Спасибо за уроки, они пригодятся многим, доступные и понятные!
def create_arr(line, column):
a = []
for line in range(line):
a.append([0] * column)
print(a)
create_arr(5, 4)
Наиль, вам надо периодически давать частные уроки=) У вас хорошо получается ведь. Спасибо за этот урок.
Ура! Первое задание, из курса, которое сам сделал. Поставил на паузу и сделал отзеркаливание массива. Так же использовал целочисленное деление //. Спасибо и от меня за уроки.
я за 4 дня до экза сделал первое задание по питону)))
@@hummerneadekvat1832 я для себя изучаю. Так еще сложней )
Годно, давай новый урок)
Круто получается объяснять и понятно
Показалось, что у меня более бестолковый способ решения первого задания, но все тесты с разными аргументами функция прошла успешно:)
def arr2(m, n):
for array in range(m):
for el in range(n):
print(0, end=" ")
print()
такая же тема! также решил
Супер! Первая задачка и самому пришла на ум пока слушал урок)
Спасибо за уроки, очень понятно объясняешь ;)
комментарий просто для рейтинга) комбинация двух задач - сначала создается список с заданными размерами, а потом он отзеркаливается
def createarray (x,y):
zeroarray=[]
for t in range (x):
tempo=[]
for length in range(y):
tempo.append(length)
zeroarray.append(tempo)
return zeroarray
arr1=createarray(5,5)
print("source matrix")
for m in range(len(arr1)):
print (arr1[m])
for i in range(len(arr1)):
for j in range(len(arr1)//2):
temp=len(arr1)-j-1
arr1[i][j],arr1[i][temp]=arr1[i][temp],arr1[i][j]
print("after mirroring")
for m in range(len(arr1)):
print (arr1[m])
arr_2d = [['Спасибо'], [alishev], [за помощь!]]
def print_matrix(arr_2d):
for arr in arr_2d:
for el in arr:
print(el, end = ' ')
print()
print_matrix(arr_2d)
________________________________________
Вывод:
Спасибо
alishev
за помощь!
arr_2d = [['Спасибо'], ['alishev'], ['за помощь!']]
def print_matrix(arr_2d):
for arr in arr_2d:
for el in arr:
print(el, end = ' ')
print()
print_matrix(arr_2d)
Зачем все усложнять в последней задаче?
def reverse_arr_2d(arr_2d):
for arr in arr_2d:
arr.reverse()
return arr_2d
с точки зрения решения конкретной задачи - да, это наиболее простой способ, однако в процессе обучения полезно придумывать и свои алгоритмы)
Огромное спасибо, что так понятно объясняешь, другие так не могут. С нетерпением жду следующих уроков. Хочется что бы они выходили как можно чаще. С первой зарплаты программиста задоначу 5 % . Только не забудь добавить кнопку спонсировать
Как успехи? Устроился программистом?
@@cryptobubbles3261 Забросил наверное он
спасибо тебе огромное за твои уроки !!!! ТЫ ЛУЧШИЙ !!! жду с нетерпением новых уроков по питону!!! Так же очень интересно было бы посмотреть серию видео:
1. Python+PyGame для начинающих,
2. Python + OpenGl
3. Python + Kivy
смотрел бы с удовольствием!!!!
# Задача 2)
def mirror(arr_2d):
for arr in arr_2d:
arr2 = arr.reverse()
arr = arr2
return(arr_2d)
Классно обьясняешь. Очкень часто помогаешь в школе
Не знал как сделать целочисленное деление. Поэтому сделал без деления.
def mirror_matrix2d(matrix):
for string in matrix:
len_str = len(string) - 1
for left in range(len_str):
right = len_str - left;
if left < right:
string[left], string[right] = string[right], string[left]
else:
break
Уроки смотрю, вроде вникаю. Но как практика, так почти не понимаю.
Нужно просто гуглить реализации различных решений. И стараться вникать в них подробно, желательно первое время в более простые из найденых. Все приходит с практикой. А практика лучше на мой взгляд строится на опыте различных реализаций в первое время. Плюс доп источники книги, статьи и другие различные видео по питону.
Гугли, многие программисты тоже так делают
@@МаксИ-ъ9т не многие, а все. Главное отличие хорошего программиста от плохого, это то что он умеет правильно гуглить.
Тоже самое) как говорил мой знакомый татарин «я как собака, что говорят по татарски понимаю а говорить немого»:) не хватает практики) лично я начал выписывать функции и синтаксис, как минимум проще потом искать, чем ролики перематывать)
#сначала создал 2-х мерный массив, потом стал его "печатать ")00))
def create_2d (x,n):
a = 0
b = 0
a1 = []
b1 = []
while a < n :
a1.append(0)
a +=1
while b < x:
b1.append(a1)
b +=1
for i in range(len(b1)):
for j in range(len(b1[i])):
print (b1[i][j],end = " ")
print ()
create_2d(10,5)
Я не очень понял, а что за print_matrix?
Можно проще решить:
def create_2d_arr(m, n):
for i in range(n):
print('0' * m)
print()
arr = create_2d_arr(6, 3)
print(arr)
Спасибо за уроки! Успехов автору и учащимся! ;)
Спасибо за урок. нравится формат очень. Я так понимаю - следующий урок не скоро? Пока можно по другим курсам пройтись)
задачи реально заставляют думать я пытался найти подсказки в интернете по поводу второй задачи и сделал
def ren_matrix(l):
return l[::-1]
print(ren_matrix(text))
в итоге всетаки неправильно ) но зато подумал) хорошо объясняешь спасибо за уроки!
добрый вечер, подскажите, а как создать 2д массив, при этом пользователь сам вводит элементы строки и столбца?
end = ' ' в функции print не работает, подскажите почему, и как там это можно реализовать, спасибо.
1 задание
import random
a = [random.randint(-7, 7) for i in range(10)]
print(a)
b=[]
for i in range(len(a)):
if a[i] < 0:
b.append(a[i])
print(b)
Скажите, а как сделать, чтобы элементы матрицы вводились с клавиатуры?
2 задание
import random
a = [random.randint(-19, 19) for i in range(10)]
print(a)
for i in range(len(a)):
if a[i] > 0:
first_pos_index = i
break
else:
first_pos_index = len(a)
a[:first_pos_index] = [100] * first_pos_index
print(a)
задача очень хорошая но я не понимаю логику
я понимаю что делают те или иные функции
но не понимаю как они взаимодействуют друг с другом
всё очен понятно и приятно слушать. Огромное спасибо вам за ваш труд ) very big like
Не работает, почему?
def create_2d_arr(m, n):
arr1 = [ ]
for i in range(m):
arr2 = [ ]
for el in range(n):
arr2.append(0)
arr1.append(arr2)
return arr1
arr_5_10 = create_2d_arr(5, 10)
print(arr_5_10)
если пишу принт матрикс выдает что не опознанная переменная
аналогично
.
Вторую задачу сам не решил, немного запутался.
#Задача 1
def create2dArr(m, n):
arr2d = []
for i in range(m):
arr2d.append([])
for j in range(n):
arr2d[i].append(0)
return arr2d
def print_matrix(l):
for i in range(len(l)):
for j in range(len(l[i])):
print(l[i][j], end=" ")
print()
a = create2dArr(3, 3)
print_matrix(a)
4 задание
import random
a = [random.randint(-7, 7) for i in range(10)]
print(a)
B=int(input('введите число B'))
a.insert(5, B)
print(a)
Спасибо за материал, загрузите пожалуйста материал о Tree
Сначала "захардкодил" вторую задачу, идя по верному пути, но моя версия работала только с матрицами с 3-мя столбцами. Потом прослушал условие внимательнее и понял, что скрипт должен работать для любых матриц, поэтому закодил вот это (про себя подумал, пфф, так еще проще)-
def mirr_matr(х):
for m in Ali_list:
m=m.reverse()
return Ali_list
def print_matr(x):
for arr in x:
for element in arr:
print(element, end=" ")
print()
Ali_list = [[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]]
print_matr(Ali_list)
print()
print()
print_matr(mirr_matr(Ali_list))
Отчаянно пытаясь решать задачи, только зная питон по предыдущим урокам, волей не волей становишься Джуном)))
Последнюю задачку можно было решить так, правильно? По-моему так даже короче и проще:
def print_matrix_mirror(arr_2d):
for arr in arr_2d:
print(arr[::-1])
print_matrix_mirror(arr_2d)
Просто и доходчиво супер
Что то в этом уроке ты прям усложнил решение, я сделал покомпактнее вот примеры.
Задача на заполнение нулями массива с выбранными параметрами:
def massiv_2d (m, n):
mass = [[ 0 for i in range(m)] for j in range(n) ]
print (mass)
massiv_2d (6,5)
Задача на зеркало:
mas=[[1,2,3], [4,5,6], [7,8,9]]
print_mas(mas)
print("Зеркало масива")
def zerkalo (mas):
for i in range(len(mas)):
t=len(mas[i])-1
while t>=0:
print (mas[i][t], end = " ")
t-=1
print ()
zerkalo(mas)
3.
import random
a = [random.randint(-7, 7) for i in range(10)]
print(a)
min_elem = min(a)
min_index = a.index(min_elem)
del a[min_index]
print(a)
Добрый день. Когда пытаешься делать как вы в программе Pycharm, вызывать элемент по индексу, не получается вызывать!!! Пишет вот такое определение no newline at end of life
Здравствуйте. А я по первой задаче не могу понять, каким образом в варианте решения Наиля мы получаем на выходе именно таблицу. Мой вариант выглядит так:
m = int(input("Введите кол-во строк матрицы:"))
n = int(input("Введите кол-во столбцов матрицы:"))
def create(m,n):
arr = [ ]
for mas in range(m):
arr.append([ ])
for el in range(n):
arr[mas].append(0)
print(arr[mas][el], end = " ")
print()
create(m,n)
Почему у меня в VS code решение 1 задачи выдает только одну строку из 10 нулей. (переписал все как в ответе)
def create_matrix (m,n):
row = [0] * n
matrix = [row] * m
return (matrix)
вышло как-то так, зато работает
def vunc(any_sheet):
save_list = []
for i in any_sheet:
list3 = []
for j in i[::-1]:
list3.append(j)
save_list.append(list3)
def func(a):
for l in range(len(save_list)):
for t in range(len(save_list[l])):
print(save_list[l][t], end = ' ')
print()
func(save_list)
Добрый день!
Прошу подсказать какие-нибудь видео-лекции или книги для изучения питона.
Этот курс очень нравится, но ждать столько времени новых видео нереально(
Укус питона bute of python отличная книга по изучению основ питонп
Курсы от Coursera
Основы программирования на Python - от Высшей Школы Экономики
Математика и Python для анализа данных - совместный курс от МФТИ и Яндекс
Программирование на Python Specialization - курс от МФТИ и mail.ru для более продвинутых
Курс Python от Stepic, а также его продолжение
Курс Python от Lektorium
Курс Python от Intuit (и ещё один)
Курс Python от Hexlet
Лекции ВМК МГУ
Курс с задачами от Stepic, где сложность задаваемых задач зависит от вашего уровня подготовки
pythonworld.ru/kursy/free.html
A byte of python
первая задача
def create_2d_arr(m,n):
for t in range(0, m):
for k in range(0, n):
print(0, end= ' ')
print()
после окончания 10 урока что будем делать дадите направление или чтота в этом роде
Будут следующие уроки скоро
Добрый день! подскажите пожалуйста, не понимаю один момент.
почему когда я пишу код с нуля, то при выводе "print_matrix..." выдает ошибку.
def create_2d_arr(m, n):
arr_2d = []
for i in range(m):
internal_arr = []
for j in range(n):
internal_arr.append(0)
arr_2d.append(internal_arr)
return arr_2d
arr_5_10 = create_2d_arr(5, 10)
print_matrix(arr_5_10)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Input In [3], in ()
----> 1 print_matrix(arr_5_10)
NameError: name 'print_matrix' is not defined
Вторая задача
def matrix_mirror(my_list):
for i in range(len(my_list)):
k=-1
for j in range(len(my_list[i])):
if k>-len(my_list[i]):
my_list[i][j], my_list[i][j+k] = my_list[i][j+k], my_list[i][j]
k-=2
return(my_list)
В первой задаче у меня чуть другое решение, и даже короче:
def create_2d_array(m, n):
array=[]
for i in range(m):
array.append([])
for j in range(n):
array[i].append(0)
return array
а есть ли в jupyter notebook функция отладчика программы, посмотреть как код пошагово работает ? (для циклов как мне кажется само то посмотреть)
Нету, если тебе нужен дебаггер советую использовать IDE
Делаю в пайчарме! в чем ошибка подскажите. выдает списком ответ а не таблицой.
def create_2d_arr(m, n):
arr_2d = []
for i in range(m):
internal_arr = []
for j in range(n):
internal_arr.append(0)
arr_2d.append(internal_arr)
return arr_2d
print(create_2d_arr(5, 10))
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
в чем ошибка подскажите. выдает списком ответ а не таблицой.
В уроке я использую функцию print_matrix() для вывода квадратной матрицы на экран.
@@alishevN да так тоже делал
arr_5_10 = create_2d_arr(5, 10)
print_matrix(arr_5_10)
подчеркивает print_matrix и пишет name 'print_matrix' is not defined
может в PyCharm подругому вводить
а функцию print_matrix() кто создаст?
посмотрите урок повнимательнее
Правильно №2?
------------------------------------
def mirror_2d_arr(arr):
for x in a:
x.reverse()
print(x)
a = [
[1, 3, 2],
[4, 6, 5],
[7, 9, 8]]
mirror_2d_arr(a)
Очень долго ломал голову, так и не осилил сделать это через формулу: ch = n /2, где n = len(sps)
вторая задачка:
def mirror(arr_1):
for el in arr_1:
el.reverse()
print(el)
работает, но как-то подозрительно легко
И тут я понимаю, что у меня проблемы с абстрактным мышлением. Почему-то не выводятся строки в столбик в первом задании. Всё идет одной строкой. А при print_matrix() выдает NameError. Что не так, не понимаю.
def create_2d_arr(m, n):
arr_2d = []
for i in range(m):
cer = []
for j in range(n):
cer.append(0)
arr_2d.append(cer)
return arr_2d
arr_5_10 = create_2d_arr(5, 10)
print(arr_5_10)
задачу 2 лучше решать так по моему
arr_2d = [[1, 2, 3, 5], [6, 7, 8, 10], [11, 12, 13, 14]]
def print_m(arr_2d):
for arr in range(len(arr_2d)):
arr_2d[arr].reverse()
for j in range(len(arr_2d[arr])):
print(arr_2d[arr][j], end=' ')
print()
print_m(arr_2d)
тогда можно будет создавать бесконечное множество списков и списков внутри списка)
Решил вторую задачу методом буфера, по моему прикольно получилось) :
def printMatrixV1(l_arr2d):
for row in range(len(l_arr2d)):
for column in range(len(l_arr2d[row])):
print(l_arr2d[row][column], end = ' ')
print()
arr2d = [[1,2,3,4],[8,5,6,56],[43,7,8,9],[45,434,47,78]]
m = 4
print("Original matrix:")
printMatrixV1(arr2d)
print("Reflected matrix:")
for i in range(m):
temp_list = []
for j in range(len(arr2d[i]) - 1,-1,-1):
temp_list.append(arr2d[i][j])
arr2d[i] = temp_list
printMatrixV1(arr2d)
Круто
вторая задача решается проще - через reversed или через метод reverse
from typing import List
array = [[1,2,3],
[4,5,6],
[7,8,9]
]
def mirror_array(array:List):
for element in range(len(array)):
array[element] = list(reversed(array[element]))
return array
print(array)
print('
Mirror array
')
print(mirror_array(array))
Здравствуйте. Почему копирование списка в 2д список не происходит например, ведь меняется только место объявления вложенного списка но и при этом каждую итерацию основного списка вложенный очищается:
import random
def print_matrix(x):
for i in x:
print (i)
def create_2d_arr(m,n):
arr_2d=[]
arr = []
for i in range(m):
for j in range(n):
arr.append(random.random())
arr_2d.append(arr)
arr.clear()
return arr_2d
print_matrix(create_2d_arr(7,5) )
Задача 2: (С красивым выводом в консоль без запятых)
print("Введите кол-во строк ="); m = int(input())
print("Введите кол-во столбцов ="); n = int(input())
if n == m:
a = []
h = 1
for i in range(m):
d = []
for k in range(n):
d.append(h)
h += 1
a.append(d)
for arr in a:
for el in arr:
print(el, end = " ")
print()
for j in range(len(a)):
for l in range(len(a[j])):
a[j].sort(reverse=True)
print()
for arr1 in a:
for el1 in arr1:
print(el1, end = " ")
print()
else: print("Не Удовлетворяет условию задачи")
НЕ ПОНИМАЮ, КТО за все старания Наиля ставит ему дизлайк !? Так и будут змейку до конца жизни программировать ! Лично мне - норм, ведь все на высшем уровне. Если уже не поняли или что - то не так, просто напишите в комментах. Наиль обязательно ответит ! За что дизлайк - то !?
Ну... почти понимаю ... У всех есть свои вопросы...
Как аргумент len(Z[k]) - 1 - w из функции mirror стал входным аргументом j в функции swap ?
Осилил 1-ю задачу:
a=[]
b=[]
def func(stolb,str):
for i in range(stolb):
b.append(i)
b[i]=b[i]*0
for j in range(str):
a.append(b)
print("Введите количество столбцов:")
stolb=int(input())
print("Введите количество строк:")
str=int(input())
func(stolb,str)
def func(a):
for m in range(len(a)):
for n in range(len(a[m])):
print(a[m][n], end=" ")
print()
func(a)
Я сделал чуть по др. вторую задачу (вроде тоже работает):
a = [[1, 2, 3, 5, 6], [4, 5, 6, 4, 3], [7, 8, 9, 5, 9]]
def mirror_2(a):
for i in range(len(a)):
for j in range(len(a[0]) - 1, -1, -1):
print(a[i][j], end=' ')
print()
mirror_2(a)
Сначала решил задачу, но потом захотелось всё автоматизировать до конца)))
def create_2d_arr(m,n): #создание матрицы
arr_2d = [] #создаём массив
for i in range(m):
internal_array = []#создаёт m пустых массивов
for j in range(n):
internal_array.append(0)#добавляет в пустые массивы нули n раз
arr_2d.append(internal_array)# добавляет созданные массивы в основной массив.
q = 1 #вставляем числа от 1 до n вместо нулей
for x in range(len(arr_2d)):
for z in range(n):
arr_2d[x][z] += q
q += 1
return arr_2d
###############################################################
def reverse_arr(array_n_m): #переворачиваем матрицу
for i in range((len(array_n_m))):
array_n_m[i].reverse()
return array_n_m
###############################################################
def print_matrix(n): #для преобразования матрицы в нормальный вид
for i in range(len(n)):#проходим по спискам
for j in range(len(n[i])): #проходим по элементам
print(n[i][j], end = ' ')
print()
m = int(input())#вводим m при запуске программы
n = int(input())#вводим n при запуске программы
result = reverse_arr(create_2d_arr(m,n))
print_matrix(result)
def miror_2d_arr (arr_d2):
for arr in arr_d2:
for i in arr:
arr.reverse()
return arr_d2
А не рациональнее будет написать зеркальное отображение массива таким образом (если нет, скажите почему):
arr_1=[[11,12,13,14],[21,22,23,24],[31,32,33,34]]
arr_2=copy.deepcopy(arr_1)
print(arr_1)
for i in range(len(arr_1)):
c = len(arr_1[i]) - 1
for j in range(len(arr_1[i])):
arr_2[i][j]=arr_1[i][c-j]
print(arr_2)