Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Dreamkiller
1 / 1 / 1
Регистрация: 01.03.2013
Сообщений: 68
#1

Расстановка скобок в цикле for in

03.05.2018, 17:41. Просмотров 194. Ответов 10
Метки нет (Все метки)

Есть формула, не получается прописать ее в python 3.x Не могу расставить скобки походу

Расстановка скобок в цикле for in


a - average1 - a подчеркивается красным. В терминале ругается еще на TypeError: a float is required



Python
1
denominator = math.sqrt(sum((a - average1)**2))*math.sqrt(sum(((b - average2)**2)) for a, b in zip(short_rating1, short_rating2))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2018, 17:41
Ответы с готовыми решениями:

Расстановка скобок
y:=-1*(pi+sqr(abs(sin(x)/.... почему под первой скобкой (Х пишет ошибку "."

Расстановка скобок с максимизацией выражения
Разработать программу, расставляющую скобки во введенном арифметическом...

Расстановка скобок и возврат списка
Есть такое задание: "Напишите функцию, которая вводит фразу на естественном...

Расстановка скобок в запросе, в условии or
Доброго времени суток.. есть вот такой запрос ...

Расстановка скобок в условном операторе
Никак не могу понять где поставить скобки(begin end), чтобы если квадраты чисел...

10
clipper1995
11 / 11 / 9
Регистрация: 19.03.2018
Сообщений: 30
03.05.2018, 17:57 #2
Если не вдаваться в подробность о формуле:
справа от = - это генератор. Поэтому с ним надо что-то делать. Если обернуть весь генератор в скобки, то подчеркивание красным пропадет, так как с точки зрения синтаксиса переменная a станет определена
Чтобы понять генератор, запусти код с более примитивной формулой, а потом усложняй формулу например:
Python
1
print(list(a+b for a, b in [[1,2],[3,4]]))
0
Dreamkiller
1 / 1 / 1
Регистрация: 01.03.2013
Сообщений: 68
03.05.2018, 18:01  [ТС] #3
В этом же коде я высчитывал нечто похожее, и там все работает

Python
1
number = sum(((a - average1)*(b - average2)) for a, b in zip(short_rating1, short_rating2))
0
clipper1995
11 / 11 / 9
Регистрация: 19.03.2018
Сообщений: 30
03.05.2018, 18:05 #4
как раз тут у тебя внутри sum живет генератор, обернутый в скобки , а в вопросе - нет
0
Dreamkiller
1 / 1 / 1
Регистрация: 01.03.2013
Сообщений: 68
03.05.2018, 18:19  [ТС] #5
Python
1
denominator = (math.sqrt(sum((a - average1) ** 2)) * math.sqrt(sum(((b - average2) ** 2))) for a, b in zip(short_rating1, short_rating2))

Ошибка: <generator object get_average_rating.<locals>.<genexpr> at 0x000000000157F728>
0
Garry Galler
1305 / 1048 / 389
Регистрация: 28.10.2013
Сообщений: 2,667
03.05.2018, 18:32 #6
Это не ошибка - это генератор. Очень ленивый. Пока не пнешь запустишь - не полетит.
0
Dreamkiller
1 / 1 / 1
Регистрация: 01.03.2013
Сообщений: 68
03.05.2018, 18:35  [ТС] #7
Почему все ходят вокруг да около? Нельзя быть более конкретным? Уже 2 часа сижу над этой строчкой, а тут все только намеки дают, нет бы показать как прописать чтоб работало, чтоб я мог посмотреть что изменилось в коде и сделать выводы.
0
Garry Galler
1305 / 1048 / 389
Регистрация: 28.10.2013
Сообщений: 2,667
03.05.2018, 18:40 #8
Цитата Сообщение от Dreamkiller Посмотреть сообщение
Нельзя быть более конкретным?
Лутц. Изучаем python. Глава 14 Итераторы и Генераторы, стр 416. Продолжение темы в Гл. 20.
0
woldemas
360 / 261 / 156
Регистрация: 06.09.2013
Сообщений: 812
03.05.2018, 18:45 #9
Dreamkiller, просчитайте каждый множитель отдельно, зачем там zip
Python
1
2
3
s1 = sum((a - average1)**2 for a in short_rating1)
s2 = sum((a - average2)**2 for a in short_rating2)
denominator = math.sqrt(s1 * s2)
1
Dreamkiller
1 / 1 / 1
Регистрация: 01.03.2013
Сообщений: 68
03.05.2018, 19:02  [ТС] #10
Хотел одной строчкой все. Но нагуглил только что перед генератором нужно прописывать list или квадратные скобки.
Вот все данные, которые участвуют в расчетах.

Python
1
2
3
4
5
average1 = 3.82
average2 = 3.98
 
short_rating1 = [3.5, 4.5, 4.0, 3.5, 4.0, 4.5, 3.5, 4.0, 2.0, 4.0, 3.0, 5.0, 4.5, 4.5, 3.0, 3.5, 4.0, 4.5, 2.0, 5.0, 3.0, 4.0, 3.0, 4.0, 5.0]
short_rating2 = [3.5, 4.5, 5.0, 4.5, 5.0, 3.5, 4.0, 4.5, 3.5, 4.5, 3.0, 3.5, 3.0, 5.0, 4.0, 4.5, 4.0, 4.0, 3.0, 3.5, 4.0, 4.0, 4.0, 4.5, 3.0]
Спасибо за помощь. Воспользуюсь вашим способом.
0
woldemas
360 / 261 / 156
Регистрация: 06.09.2013
Сообщений: 812
03.05.2018, 19:04 #11
Цитата Сообщение от Dreamkiller Посмотреть сообщение
Хотел одной строчкой все
Можно и одной строчкой, только там две разных последовательности и должны быть два генератора:
Python
1
denominator = math.sqrt(sum((a - average1)**2 for a in short_rating1) * sum((a - average2)**2 for a in short_rating2))
0
03.05.2018, 19:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2018, 19:04

Автоматическая расстановка закрывающих скобок
У меня mvc++ 2010 express , как сделать так чтобы автоматом ставилась...

Раскрытие переменных внутри скобок в условиях с IF и ELSE и в цикле с FOR
Всех заглянувших приветствую, подтолкните в нужную сторону пожалуйста - знаю...

Выражение в скобках и без скобок. Какая разница? В цикле фор
Почему (c=getchar()) в скобках работает корректно, а без них нет. Вот вариант...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru