Форум сайта python.su
from NumPy import * def Mult(str1,str2): # строки в виде 0;2;6 arr1=str1.split(';') arr2=str2.split(';') if len(arr1)==len(arr2): for x in arr: res=res+arr1[x]*arr2[x] return res else: return "Не могу перемножить." a=[[input() for y in range(4)] for x in range(4)] b=[[input() for y in range(4)] for x in range(4)] res=[[input() for y in range(4)] for x in range(4)] for y in range(4): for x in range(4): res[y][x]=Mult(';'.join(a[y],';'.join(b[:,x])
Отредактировано Volobuev_Ilya (Март 3, 2016 17:23:50)
Офлайн
Volobuev_Ilyaнет
Верный он?
Офлайн
Где ошибка можете подсказать?
Офлайн
Зачем вам модуль numpy если вы им не пользуетесь, Вот вам пример, если что не ясно - можно почитать в документации к NumPy про то что такое array, reshape, dot.
>>> import numpy as np >>> a = np.array(range(16)) >>> a = a.reshape(4,4) >>> a array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) >>> b=np.array(range(15,-1,-1)) >>> b = b.reshape(4,4) >>> b array([[15, 14, 13, 12], [11, 10, 9, 8], [ 7, 6, 5, 4], [ 3, 2, 1, 0]]) >>> a*b array([[ 0, 14, 26, 36], [44, 50, 54, 56], [56, 54, 50, 44], [36, 26, 14, 0]]) >>> np.dot(a, b) array([[ 34, 28, 22, 16], [178, 156, 134, 112], [322, 284, 246, 208], [466, 412, 358, 304]])
Офлайн
Спасибо, конечно.
НО мне надо без NumPy.
Офлайн
В функцию Mult хочу передать строку списка a и столбец списка b.
Офлайн
Volobuev_IlyaТогда поясните назначение первой строчки кода в вашем первом посте.
НО мне надо без NumPy.
Офлайн
Тогда она не нужна.
Офлайн
def Mult(arr1,arr2): if len(arr1)==len(arr2): for x in arr: res=res+arr1[x]*arr2[x] return res else: return "Не могу перемножить." a=[[input() for y in range(4)] for x in range(4)] b=[[input() for y in range(4)] for x in range(4)] res=[[input() for y in range(4)] for x in range(4)] for y in range(4): for x in range(4): res[y][x]=Mult(a[y],b[:,x])
Офлайн
А давайте я расскажу вам про концепцию тестов. Очень кратко. Допустим вы написали функцию которая делает что то с вхрдными данными и возвращает результат. Как понять что функция правильно работает? Ее надо протестировать. у вас есть некие входные данные A в результате обработки функцией FOO должен получиться результат B. Если ваша функция не выполняет это условие т.е. дает результат C то она работает неверно.
В вашем случае у вас входные данные это 2 матрицы а выходные 1 матрица. Вы можете выбрать тестовые матрицы и вручную или иначе перемножить их .
Офлайн