Форум сайта python.su
Задача
Одной из важнейших операций в линейной алгебре, аналитической геометрии, математическом анализе, анализе данных, искуственном интеллекте, компьютерной графике и в огромном количестве других областей математики и информатики является вычисление скалярного произведения двух векторов.
Вычисляется скалярное произведение, как сумма произведений соответствующих компонент векторов.
В данной задаче вам необходимо написать функцию dot_product(N, vector1, vector2) , вычисляющую скалярное произведение для двух заданных векторов одинаковой размерности N .
Обратите внимание: в решении должно быть только объяевление одной функции dot_product и никакого другого кода.
Аргументы функции
Функция принимает в качестве аргументов размерность пространства N и 2 вектора. Гарантируется, что размерности векторов совпадают. Векторы заданы списками длины N .
Возвращаемое значение
Функция должна возвращать одно число – скалярное произведение заданных векторов.
Примеры
>> print(dot_product(3, (1,2,3), (1,2,3))
14
>> print(dot_product(3, (1, 2, 3), (4, 5, 6))
32
Мое решение:
Не врубаюсь как выложить код???
Проблема, что не могу пройти тест из-за ошибки, хотя результаты тестирования вроде в порядке.
Отредактировано ElmarB (Март 17, 2020 17:34:46)
Офлайн
Вот тест
Прикреплённый файлы:
Uten navn.png (25,1 KБ)
Офлайн
def dot_product(vector1, vector2): scalar_product_of_vector = 0 for i in range(len(A)): scalar_product_of_vector += B[i]*A[i] return scalar_product_of_vector A = [int(x) for x in input().split()] B = [int(y) for y in input().split()] print(dot_product(A, B))
Офлайн
предполагаю что изза того что
ElmarBуберите все что вне функции и скормите автотетсту только функцию, без всех этих input().split() и принтов.
Обратите внимание: в решении должно быть только объяевление одной функции dot_product и никакого другого кода.
[code python][/code]
Отредактировано PEHDOM (Март 17, 2020 18:03:29)
Офлайн
PEHDOMСпасибо, теперь всё заработало.
предполагаю что изза того что
Офлайн
Другое задание
Последний тест 10 выдает ошибку, связанную с памятью. MemoryError
Задача:
В некотором физическом эксперименте показания прибора снимались с частотой 5 измерений в секунду. Эксперимент проводился в течение довольно большого времени, и в результате накопилось очень много данных. Ученых, которые проводили данный эксперимент, очень интересует, какое максимальное значение измеряемой величины достигалось во время измерения. Но вот беда: на остановку установки также требуется секунда времени, и в течение этого времени с установки могут приходить совершенно любые значения величины. В связи с этим, показания последних 5 измерений учитывать при поиске максимального значения не следует.
Вам необходимо написать программу, которая в данном потоке чисел заранее неизвестной длины находит максимальное значение, отбрасывая при этом последние 5 измерений.
Формат входных данных
На вход вашей программе передается последовательность натуральных чисел – результаты измерений. Каждое новое число передается с новой строки. Гарантируется, что длина входной последовательности не меньше 6 и не превосходит 10 9 . На конце последовательности передается число 0.
Формат выходных данных
Программа должна вывести на экран одно число – максимальное значение входной последовательности за исключением последних 5 элементов.
Примеры
Ввод
1
2
3
4
5
6
0
Вывод
1
Ввод
1
5
2
15
373
232
43
21
5433
5312
0
Вывод
373
То что я написал
[code python]N = int(input())
A = []
max = 0
while N != 0:
A.append(N)
N = int(input())
n = len(A)
for i in range(0, n-5):
if A[i] > max:
max = A[i]
print(max)[/code]
Отредактировано ElmarB (Март 17, 2020 21:27:33)
Прикреплённый файлы:
test 10.png (35,8 KБ)
Офлайн
ElmarBЭту задачу решали уже. И она делается не через накопление всех элементов, а через использование буфера на пять элементов.
Другое задание
Последний тест 10 выдает ошибку, связанную с памятью. MemoryError
Офлайн
ElmarBможешь показать код у меня тоже такое задание, никак не получается
Офлайн