Перемножить сумму и последний элемент исходного массива
Моя ошибка:
summ == 1
UnboundLocalError: local variable ‘summ’ referenced before assignment
Я эту переменную и глобальной ставил, но никак не хочет работать. Помогите исправить, заранее большое спасибо))
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Найти сумму элементов массива и разделить каждый элемент исходного массива на полученное значение
Почему обработанный массив имеет вид: 0 0 0 0? using System; using System.Collections.Generic;.
Записать в каждый элемент массива с четным индексом сумму всех предыдущих элементов исходного массива
Дан одномерный массив целых чисел А. Создать новый массив В, занеся в каждый элемент с четным.
Найти сумму всех элементов массива и разделить каждый элемент исходного массива на полученное значение.
Дан целочисленный массив размера N.Найти сумму всех элементов массива и разделить каждый элемент.
Am I evil? Yes, I am!
![]()
![]()
16120 / 9755 / 2731
Регистрация: 21.10.2017
Сообщений: 21,624

Сообщение было отмечено catauggie как решение
Решение
1 2 3 4 5 6 7 8 9
def checkio(arr): summ = 0 for i in range(len(arr)): if not i % 2: summ += arr[i] return summ * arr[-1] print(checkio(range(int(input('>>> ')))))
Добавлено через 50 минут
Вот, без условия
1 2 3 4 5
def checkio(arr): summ = 0 for i in range(0, len(arr), 2): summ += arr[i] return summ * arr[-1]
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Записать каждый третий элемент исходного массива в другой массив и вычислить сумму элементов этого массива
1)Записать каждый третий элемент массива х=(х1,х2..х15) в массив у(у1,у2..ук) вычислить сумму.
Необходимо заменить последний элемент массива на сумму элементов кратных 5
Ввёл массив, не получается сделать основное задание по замене последнего элемента массива. .

Найти сумму элементов массива, больших, чем последний элемент
1/ Дан массив из 25 элементов. Найти сумму элементов, больших последнего элемента. Решить через.
Разделить каждый элемент исходного массива на сумму его элементов
Найти сумму элементов одномерного массива размером N (N<=5). Разделить каждый элемент исходного.

Поставить последний элемент массива перед элементом, имеющим максимальную сумму цифр
В целочисленном массиве А поставить последний элемент перед элементом, имеющим максимальную сумму.

Динамический массив: записать в 1-ый элемент массива сумму положительных элементов, а в последний — отрицательных
Массив A содержит 20 вещественных чисел. Используя динамическое выделение памяти под массив.
Дан массив. Все его элементы: а) уменьшить на 20; б) умножить на последний элемент; в) увеличить на число В.
Vitness Просветленный (35043) Евгения Хоменко, это ко всем трем решение.
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.
Как умножить каждый элемент массива с шагом n?
Здравствуйте.
Имеется массив из единиц (array1). Необходимо первый элемент этого массива умножить на корень из 2, второй — на 2, третий — на 2 корня из двух, четвертый — на 4 и т. д.
Как это сделать? Никак не пойму. Cам пробовал так, не работает:
for i in range(len(array1)): array1[i] *= sqrt(2) i += 1 print(amplitudes_array)
- Вопрос задан более трёх лет назад
- 3838 просмотров
1 комментарий
Оценить 1 комментарий
в одну строку
lst = array1
x = [lst[i]*(sqrt(2)**(i+1)) for i in range(0, len(lst))]
Решения вопроса 5

import math def getAmplitudesArray(array): amplitudesArray = [] multiplier = 2 for item in array: amplitudesArray.append(float(item * math.sqrt(multiplier))) multiplier *= 2 return amplitudesArray array = [1] * 10 print(getAmplitudesArray(array)) >>> [1.4142135623730951, 2.0, 2.8284271247461903, 4.0, 5.656854249492381, 8.0, 11.313708498984761, 16.0, 22.627416997969522, 32.0]
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

Разрабатываю научное ПО на языке Python.
from math import sqrt array = [1] * 10 for i in range(len(array)): array[i] *= sqrt(2) ** (i + 1) print(array)
Если используются массивы из numpy, то необходимо проверить их тип. Если dtype целочисленный, то у вас всегда будет получаться целое число.
import numpy as np array = np.ones(10, dtype='int32') for i in range(len(array)): array[i] *= np.sqrt(2) ** (i + 1) print(array)
Чтобы избежать этого, либо делаете новый массив, либо этот конвертируете в тип float, либо изначально создаете массив типа float.
import numpy as np array = np.ones(10, dtype='f4') for i in range(len(array)): array[i] *= np.sqrt(2) ** (i + 1) print(array)
Разбор: задача про массив и сумму чисел
На собеседованиях часто просят написать какой-то простой код. Так компания проверяет, знаете ли вы вообще программирование, и смотрит, как вы работаете с кодом. В новом цикле статей мы разберём популярные вопросы с собеседований и покажем, как их можно решить разными способами.
Задание
У нас есть массив с целыми числами, как с положительными, так и отрицательными. Все числа в массиве разные. Если сложить или вычесть любые два числа из массива, они точно поместятся в стандартной целочисленной переменной.
Ещё у нас есть какое-то целое число — оно не в массиве, а само по себе, отдельной переменной.
Нужно вывести индексы тех двух элементов, которые в сумме дают то самое отдельное число. Например, если в массиве у нас (2, 4, 5, 1, 8), а число — 5, то ответом будет пара 1 и 3, потому что на этих местах стоят числа 4 и 1 (и дают в сумме 5). Помните, что нумерация массивов почти во всех языках программирования начинается с нуля.
Решение простым перебором
Самый простой способ решить эту задачу — перебрать попарно все элементы массива и посмотреть, даст ли какая-то пара нужную сумму. Этот код вряд ли впечатлит работодателя, но результат вы получите верный.
- В первом цикле перебираем все элементы от первого до предпоследнего.
- Внутрь вкладываем второй, но делаем это так, чтобы не пересекаться по индексам с первым циклом. Для этого смотрим на переменную, с которой работает первый цикл, и начинаем со следующей — и до последнего элемента.
- Внутри второго цикла складываем элементы массива с нашими индексами и смотрим, получился нужный результат или нет.
- Если получился — выводим результат и останавливаемся.
- Если не получился — идём на новый виток цикла.
- Если мы прошли весь массив, но так ничего и не нашли — выводим сообщение о том, что такой пары нет.
# массив с числами nums = [2, 4, 5, 1, 8] # сумма target = 5 # функция, которая найдёт ответ def twoSum(nums, target): # сообщение по умолчанию answer = 'В массиве нет такой пары чисел' # запускаем первый цикл for i in range(len(nums) - 1): # запускаем второй цикл for j in range(i + 1, len(nums)): # если получили нужный результат — if target == nums[i] + nums[j]: # меняем ответ и добавляем в него индексы элементов answer = 'Ответ: ' + str(i) + ' и ' + str(j) # выводим результат работы функции return answer # запускаем код print(twoSum(nums, target))

Решение с дополнительным словарём
Если хотите показать, что вы умеете нестандартно мыслить — используйте приём с дополнительным словарём, в котором данные хранятся попарно: ключ и значение. С ним можно убрать один вложенный цикл и сократить количество вычислений. Работает приём так: мы создаём дополнительный словарь, в котором будем хранить результаты просмотра исходного массива. Но создаём его с одной особенностью: мы будем заполнять его не по порядку, а указывая в качестве ключей значения элементов исходного массива. Например, если в исходном массиве у элемента с индексом 2 значение равно 15, то мы в новом словаре создаём элемент с ключом 15 и кладём туда двойку:

Это даст нам быстрый доступ к индексам уже проверенных элементов — мы просто указываем значение элемента и сразу получаем его индекс в исходном массиве.
Остальная логика выглядит так:
- Перебираем исходный массив и на каждом шаге считаем разницу между нужным значением и очередным элементом.
- Если разница есть в словаре с просмотренными элементами — выводим оба индекса.
- Если разницы в словаре нет — добавляем только что просмотренный элемент в словарь.
Проще говоря, мы перебираем элементы, считаем разницу и смотрим, попадался ли нам результат вычитания среди тех элементов, которые мы уже перебрали. Вот как это выглядит в коде:
# массив с числами nums = [2, 4, 5, 1, 8] # сумма target = 5 # функция, которая найдёт ответ def twoSum(nums, target): # сообщение по умолчанию answer = 'В массиве нет такой пары чисел' # дополнительный словарь с уже проверенными элементами hashmap = <> # перебираем исходный массив for i in range(len(nums)): # находим разницу между нужным значением и очередным элементом complement = target - nums[i] # если такое значение нам уже попадалось раньше — if complement in hashmap: # получаем индекс того значения и выводим ответ answer = 'Ответ: ' + str(hashmap[complement]) + ' и ' + str(i) # если не попадалось — запоминаем индекс по значению элемента hashmap[nums[i]] = i # выводим результат работы функции return answer # запускаем код print(twoSum(nums, target))

Что дальше
Есть ещё третий способ решения этой задачи — попробуйте найти его сами и почувствовать себя на собеседовании. И подпишитесь, чтобы не пропустить новые статьи с разборами.
