Hola Ricardo y Armando, si las expresiones que muestran son código Python, 
lamento decirles que están bastante lejos de la realidad.

Están comparando expresiones con operadores diferentes y que el resultado en 
ocasiones les coincida es mera casualidad.
En Python el operador ** es potenciación y ^ equivale a la operación XOR entre 
bist.
>>> -2**2
-4
>>> -(2^2)
0
Armando ni siquiera coinciden los resultados, dándote el beneficio de la duda, 
y utilizas el ^ como operador de potenciación, entonces:
La expresión -(2^2) en Python equivale a:
>>> -(2**2)
-4
Aquí los resultados con el operador ** coinciden, -4 en ambos casos, y lo 
acepto como correcto desde el punto de vista del lenguaje, pero no desde el 
punto de vista matemático, pues matemáticamente las expresión -2² es diferente 
a -(2²).

Los desarrolladores de lenguajes son libres de incorporar lo que desean, esto 
también aplica para la precedencia de operadores y el sentido de evaluación de 
las expresiones matemáticas, pero de igual forma lo documentan para que los 
usuarios no incurramos en errores asumiendo que todos cumplen las reglas de 
evaluación matemática al pie de la letra.

 

Conjetura: Python no implementa el operador menos unario, pero si el binario el 
cual tiene menor precedencia que el de potenciación, así:

-x**n es interpretado en Python como 0-x**n.

>>> -2**2

-4

>>> 0 - 2**2

-4

 

Saludos, Johnny Alonso

 

 

De: Python-es 
[mailto:python-es-bounces+johnny.alonso.quintero=gmail....@python.org] En 
nombre de Armando Ortega
Enviado el: sábado, 24 de diciembre de 2016 6:24 a. m.
Para: La lista de python en castellano
Asunto: Re: [Python-es] Python 3.5.2

 

Buenos días.

Ricardo tiene razón. 

-2**2 = -(2^2) = -4
(-2)**2 = -2^2 = 4

Un saludo.



El 24/12/16 a las 04:54, Johnny Alonso escribió:

Hola Ricardo, Por definición “La potencia es resultado de tomar un número como 
factor 2 o más veces”. Aritmética de Baldor, capítulo XV, Elevación a potencias 
y sus operaciones inversas, página 152.

 

-2**2 = -2 * -2 

 

Leyes de la potenciación:

Todo número elevado a la cero  es igual a 1, x**0 = 1

-2**0 = 1

 

Todo número elevado a un exponente par (múltiplo de 2) es positivo, en caso 
contrario se mantiene el signo del número.

-2**2 = 4

-2**3 = -8

 

Lo anterior lo puedes verificar en la calculadora de un celular IPhone o 
Samsung, incluso en la de Windows.

 

Es evidente que en Python es así, y lo acepto porque así está documentado, pero 
es algo para tener en cuenta cuando programas en él.

 

Ricardo, con respecto a las matemáticas en este caso, estas equivocado.

 

Saludos, Johnny Alonso

De: Python-es 
[mailto:python-es-bounces+johnny.alonso.quintero=gmail....@python.org] En 
nombre de Ricardo Cárdenes
Enviado el: viernes, 23 de diciembre de 2016 5:04 p. m.
Para: La lista de python en castellano
Asunto: Re: [Python-es] Python 3.5.2

 

No, no es una excepción.

 

En matemáticas, la exponenciación tiene prioridad:

 

  -x^2 = -(x^2)

 

Los lenguajes de programación que implementan este operador, suelen adherirse a 
la regla (Python, PHP, D, Ruby, ...). Luego tienes disidentes como JavaScript, 
pero bueno...

 

Así que no, Python no es "una excepción a las reglas algebraicas".

 

Saludos,

Ricardo

 

2016-12-23 5:31 GMT-10:00 Johnny Alonso <johnny.alonso.quint...@gmail.com 
<mailto:johnny.alonso.quint...@gmail.com> >:

Gracias Kiko, me queda claro, es excepción a las reglas algebraicas en Python.

 

De: Python-es [mailto:python-es-bounces+johnny.alonso.quintero 
<mailto:python-es-bounces%2Bjohnny.alonso.quintero> =gmail....@python.org 
<mailto:gmail....@python.org> ] En nombre de Kiko
Enviado el: viernes, 23 de diciembre de 2016 10:08 a. m.
Para: La lista de python en castellano
Asunto: Re: [Python-es] Python 3.5.2

 

 

 

El 23 de diciembre de 2016, 16:05, Kiko <kikocorre...@gmail.com 
<mailto:kikocorre...@gmail.com> > escribió:

 

 

El 23 de diciembre de 2016, 15:06, Johnny Alonso 
<johnny.alonso.quint...@gmail.com <mailto:johnny.alonso.quint...@gmail.com> > 
escribió:

Hola todos, estoy iniciándome en Python y creo que se presenta un fallo de 
precedencia con el operador menos unario:

>>> -2**2  # probable error

-4

>>> -2 * -2  # Ok

4

>>> pow(-2, 2)  # Ok

4

>>> 

Por favor, si alguien sabe si esto está documentado podría indicarme en donde 
lo encuentro, de lo contrario, podrían reportarlo a la fundación, yo no lo se 
hacer.

 

 

Se evalúa antes el operador potencia: 
https://docs.python.org/3/reference/expressions.html#unary-arithmetic-and-bitwise-operations

Antes he ido muy rápido: 
https://docs.python.org/3/reference/expressions.html#the-power-operator
 

 

 

Saludos, JohnnyAlonso


_______________________________________________
Python-es mailing list
Python-es@python.org <mailto:Python-es@python.org> 
https://mail.python.org/mailman/listinfo/python-es

 

 


_______________________________________________
Python-es mailing list
Python-es@python.org <mailto:Python-es@python.org> 
https://mail.python.org/mailman/listinfo/python-es

 






_______________________________________________
Python-es mailing list
Python-es@python.org <mailto:Python-es@python.org> 
https://mail.python.org/mailman/listinfo/python-es

 

_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es

Responder a