Рекуррентное соотношение Python

Дано натуральное n и действительные числа a1, a2,...,an . Вычислить:

изображения

Сам цикл, вроде как, написал правильно, уже несколько часов сижу над самим значением zi, рекурретном соотношении. В этом и вся проблема. Никак не могу понять как его правильно записать. Мой код:

import math
import random 
n = int(input("n: "))
items = [random.randint(0, n) for i in range(n)]

suma = 0
for i in range(1, n+1)
    suma += (z - math.sqrt(z))**2

print(suma)

import math
import random 
n = int(input("n: "))
items = [random.randint(0, n) for i in range(n)]
suma = 0
for i in range(1, n+1):
    z = value if 0 < value < 25 else 2.7
    suma += z - math.sqrt(z)

print(suma)

Пробывал так, ошибка


Ответы (3 шт):

Автор решения: Zhihar

так?

sum = 0
for value in arr:
    z = value if 0 < value < 25 else 2.7
    sum += (z - math.sqrt(z))**2
→ Ссылка
Автор решения: Vasyl Kolomiets

При больших n нет смысла заменять числа на 2.7, а потом каждый раз считать корни и квадраты из 2.7. Cначала отбираем те, что от 0 до 25, и потом подсчитываем сколько раз надо добавить (2.7 - sqrt(2/7))**2. Вам понадобится больше памяти, но вычисления будут быстрее.
И кстати - что делать, если вдруг число в списке равно 0?? Из условия неясно.

import math
import random

n = int(input("n = "))
a = float(input("a = "))

items = [random.uniform(-a, a) for i in range(n)]

upwork = []
cur_i = 0
for element in items:
    if 0 < element < 25:
        upwork.append(element)

# здесь len(upwoprk) чисел не равны 2,7.  Остальные  n - len(upwork)  должны равняться 2,7
summ = 0
for z in upwork:
    summ += (z - math.sqrt(z))**2

summ += (n - len(upwork)) * (2.7 - math.sqrt(2.7))**2
print(summ)
→ Ссылка
Автор решения: Роман

Ошибка в вашем втором примере состоит в том, что переменная value не определена. Вместо value надо использовать items[i]

import random
import math
n = int(input("n: "))
items = [random.randint(0, n) for i in range(n)]

suma = 0
for i in range(n):
    z = items[i] if (0 < items[i] < 25) else 2.7
    suma += (z - math.sqrt(z))**2

print(suma)
→ Ссылка