[Help] Somatório

1,117 views
Skip to first unread message

Seiji Miyamoto

unread,
Aug 26, 2012, 7:24:28 AM8/26/12
to python...@googlegroups.com
Alo galera, preciso de vosso auxilio novamente.
estou precisando montar uma fórmula matemática no qual eu uso somatórios, porém eu não encontro uma forma de colocar os limites, por exemplo eu gostaria de fazer um somatório de x+1 com x começando de 0 e indo até 10, estou tentando fugir do "for" e da recursividade, pois como estou trabalhando com matrizes acredito que consumiria mto tempo de execução
eu experimentei fazer isso:  sum(iterable[start]) 
r = sum(x==10[x+1,0])
erro:
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    r = sum(x==10[x+1,0])
NameError: name 'x' is not defined

sei que está errado, mas qual o certo?
Abraço, vida longa e próspera.

Nicolas Coelho

unread,
Aug 26, 2012, 7:39:08 AM8/26/12
to python...@googlegroups.com
Não sei se te entendi corretamente, mas para fazer a soma dos 10
primeiros elementos de uma lista basta passar um slice para a função
sum.

>>> x = range(20)
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> sum(x[:10])
45
> --
> ------------------------------------
> Grupo Python-Brasil
> http://www.python.org.br/wiki/AntesDePerguntar
>
> <*> Para visitar o site do grupo na web, acesse:
> http://groups.google.com/group/python-brasil
>
> <*> Para sair deste grupo, envie um e-mail para:
> python-brasi...@googlegroups.com



--
Nicolas Coelho

"Do what you think is interesting, do something that you think is fun
and worthwhile, because otherwise you won't do it well anyway." -
Brian Kernighan

Luciano Ramalho

unread,
Aug 26, 2012, 8:35:37 AM8/26/12
to python...@googlegroups.com
2012/8/26 Seiji Miyamoto <021mi...@gmail.com>:
> Alo galera, preciso de vosso auxilio novamente.
> estou precisando montar uma fórmula matemática no qual eu uso somatórios,
> porém eu não encontro uma forma de colocar os limites, por exemplo eu
> gostaria de fazer um somatório de x+1 com x começando de 0 e indo até 10,
> estou tentando fugir do "for" e da recursividade, pois como estou
> trabalhando com matrizes acredito que consumiria mto tempo de execução
> eu experimentei fazer isso: sum(iterable[, start])
> r = sum(x==10[x+1,0])

Seiji, os colchetes na documetação dos argumentos de funções não fazem
parte da sintaxe. Eles marcam argumentos opcionais, e não são
colchetes que vc deve digitar. Isso signifixa que a função sum pode
ser usada dessas duas formas:

sum(iterável)

ou

sum(iterável, início)

Para somar os números de 1 a 10 você pode fazer assim:

sum(range(1, 11))

ou em duas etapas:

lista = range(1, 11)
sum(lista)

O argumento início da função sum é para vc colocar um valor inicial na
soma, útil caso vc esteja carregando um sub-total de uma operação
anterior. Veja:

>>> sum(range(1,11))
55
>>> lista = range(1, 11)
>>> lista
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> sum(lista)
55
>>> sum(lista, 1000)
1055

Finalmente, se vc quiser fazer operações numéricas com grandes volumes
de dados estude o módulo array do Python (o array é mais eficiente que
a lista, porém limita-se a operar com dados numéricos de tipos
pré-definidos). Para ainda mais recursos numéricos existe a biblioteca
numpy, que vc precisa instalar à parte, e que é largamente utilizada
em aplicações científicas e de engenharia.

[ ]s
Luciano

--
Luciano Ramalho
NOVO TWITTER: @ramalhoorg

Autor e instrutor dos cursos:
* Academia Python na Globalcode
--> http://python.globalcode.com.br

* Python para quem sabe Python nas Oficinas Turing
--> http://turing.com.br/ppqsp

Seiji Miyamoto

unread,
Aug 27, 2012, 7:19:30 AM8/27/12
to python...@googlegroups.com
Valeu pelas respostas galera, na verdade meu objetivo não era simplesmente somar 10 números e sim calcular momentos invariante de uma imagem, o que acontece é que como estou usando uma imagem eu tenho que manter a formula no domínio do tempo e os dados são discretos, então ao invés de usar integrais duplas eu uso somatórios duplos onde eu preciso setar os limites inferiores e superiores para dar certo, eu li na documentação como foi implementado o "sum()" e percebi que ele é muito simples, eu vou precisar me virar nos 30 e fazer meu próprio somatório pra dar certo, heheheheh, não vou escapar dos for e recursividade.
Mas obrigado pelas dicas, talvez eu ainda precise usar de alguma forma.

Abraços, vida longa e próspera.

Luciano Ramalho

unread,
Aug 27, 2012, 2:15:03 PM8/27/12
to python...@googlegroups.com
Só uma dica, Seiji: numpy

[ ]s
Luciano

2012/8/27 Seiji Miyamoto <021mi...@gmail.com>:
> --
> ------------------------------------
> Grupo Python-Brasil
> http://www.python.org.br/wiki/AntesDePerguntar
>
> <*> Para visitar o site do grupo na web, acesse:
> http://groups.google.com/group/python-brasil
>
> <*> Para sair deste grupo, envie um e-mail para:
> python-brasi...@googlegroups.com



--

Seiji Miyamoto

unread,
Aug 27, 2012, 2:44:13 PM8/27/12
to python...@googlegroups.com
Obrigado pela dica, já estou usando o numpy assim como o SciPy , o MatPlotLib e a PIL. Por enquanto estou conseguindo me virar com eles hehehehe, existem mais alguma biblioteca que eu possa usar pra realizar essas contas de outro mundo?

Abraços, vida longa e próspera!!! 
Reply all
Reply to author
Forward
0 new messages