Re: [Python-es] Python 3.5.2
Hola, Jhonny Alonso, Matemáticamente las expresiones -22 y -(22) son iguales porque la potenciación tiene prevalencia sobre la multiplicación y el parentesis no está alterando esa prevalencia, de pronto lo que deseabas escribir era (-2)2 en el cual debe hacerse la potencia del número -2. Saludos, Juan Pablo. De: Python-es [mailto:python-es-bounces+jpfernandez=udem.edu...@python.org] En nombre de Johnny Alonso Enviado el: sábado, 24 de diciembre de 2016 11:52 a.m. Para: 'La lista de python en castellano' Asunto: Re: [Python-es] Python 3.5.2 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 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 mailto:kikocorre...@gmail.com>> escribió: El 23 de diciembre de 2016, 15:06, Johnny Alonso 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.ht
Re: [Python-es] Python 3.5.2
Hola Ricardo, facilítame la vida, indícame quien está mal con respecto a las matemática, las calculadoras o Python, espero que la respuesta no sea “ninguna” porque entonces tendría que afirmar que sabía más antes de preguntar. Saludos, Johnny Alonso De: Python-es [mailto:python-es-bounces+johnny.alonso.quintero=gmail@python.org] En nombre de Miguel Manzano Enviado el: domingo, 25 de diciembre de 2016 1:55 a. m. Para: La lista de python en castellano Asunto: Re: [Python-es] Python 3.5.2 Ricardo y David. Nunca pensé que iba a disfrutar tanto de una conversación sobre precedencia de operadores. ;P Saludos. El 25/12/2016 7:15, "Ricardo Cárdenes" < <mailto:ricardo.carde...@gmail.com> ricardo.carde...@gmail.com> escribió: Añado, al respecto de calculadoras: en una normal, donde no se pueden introducir expresiones aritméticas, sino que lo que hay en pantalla se toma siempre como un operando completo, hubiese esperado lo contrario, ya que estoy solicitando explícitamente elevar al cuadrado el número -2 y entonces no hay ningún tipo de duda de que el resultado será "4" y no "-4" 2016-12-24 20:05 GMT-10:00 Ricardo Cárdenes < <mailto:ricardo.carde...@gmail.com> ricardo.carde...@gmail.com>: Mire señor Alonso, yo no le he respondido a la ligera. Primero, como le dije, el caso de Python no es una excepción, sino *la regla* en cuanto a lenguajes de programación *que implementan la exponenciación* en su sintaxis - es decir, la precedencia está dictada por el propio lenguaje. Es decir, no lo busque en C, o en C++, o en Java, etc. De hecho, me molesté en documentarme brevemente antes de responder. Y mira que no hay muchos lenguajes que implementen la exponenciación en su sintaxise, pero le dejo una lista (no exhaustiva), sin irme a casos demasiado exóticos: - ADA: los operadores de MAYOR precedencia son abs (valor absoluto), not (negación lógica) y ** (exponenciación). Dos niveles por encima de los operadores unarios, y uno por encima de la multiplicación/división. - D: El operador ^^ (exponenciación) está un nivel por encima de los unarios - FORTRAN: El operador ** tiene la precedencia más alta - Haskell: Los operadores ^, ^^ y ** (todos de exponenciación) están por debajo sólo de "!!", que se usa para acceder a los índices de arrays - PHP: ** está por encima de todos los demás operadores aritméticos (y mira que le tengo tirria a este lenguaje, pero por una vez...) - Python (pero esto ya lo sabíamos): ** está, como viene siendo habitual, por encima de los unarios, pero por debajo de los operadores de indización - R: ^ (exponenciación), está justo por encima de + y - unarios - Ruby: ** está justo por encima del - unario (pero justo por debajo del + unario, cosas de la vida) Casos que conozco donde la precedencia de los unarios está por encima: Prolog, JavaScript y algunos casos patológicos como Excel (véase más abajo). En cuanto a calculadoras, he usado la que tengo más a mano (en mi teléfono móvil) y: -4^2 = -16 (-4)^2 = 16 tal como esperaba. Y en el caso de las matemáticas, don Aurelio Baldor (al que no conocía, por cierto) podrá cantar misa en Latín, pero cualquier de mis profesores de matemáticas me hubiera tirado de las orejas si se ocurre interpretar que: -x^n = (-x)^n Aunque claro, siempre me animaron a usar paréntesis para que no cupiera duda. Si es cuestión de sacar referencias, pues nada. Citemos Wikipedia, que a su vez usa como referencias "Elementary Algebra for College Students" (Angel Allen) y "Taschebuch der Mathematik" (Grosche, Ziegler y Ziegler): There exist differing conventions concerning the unary operator − (usually read "minus"). In written or printed mathematics, the expression −32 is interpreted to mean 0 − (32) = −9, but in some applications and programming languages, notably Microsoft Office Excel (and other spreadsheet applications) and the programming language bc [...] Las negritas son mías, pero vamos, que la norma la que decimos nosotros, aunque algunos lenguajes de programación han escogido usar la convención contraria. Y Baldor, según vd., aunque la única copia a la que tenido acceso es una edición de 1985-86, en la que el capítulo XV no empieza hasta la página 155 y no aparece un sólo número negativo. Saludos, Ricardo 2016-12-24 6:52 GMT-10:00 Johnny Alonso < <mailto:johnny.alonso.quint...@gmail.com> johnny.alonso.quint...@gmail.com>: 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
Re: [Python-es] Python 3.5.2
dos, 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+john >>> ny.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 >> 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= >>> gmail@python.org] *En nombre de *Kiko >>> *Enviado el:* viernes, 23 d
Re: [Python-es] Python 3.5.2
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+john >> ny.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 > >: >> >> Gracias Kiko, me queda claro, es excepción a las reglas algebraicas en >> Python. >> >> >> >> *De:* Python-es [mailto:python-es-bounces+johnny.alonso.quintero= >> 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 >> escribió: >> >> >> >> >> >> El 23 de diciembre de 2016, 15:06, Johnny Alonso < >> 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/refe >> rence/expressions.html#unary-arithmetic-and-bitwise-operations >> >> Antes he ido muy rápido: https://docs.python.org/3/refe >> rence/expressions.html#the-power-operator >> >> >> >> >> >> >> Saludos, JohnnyAlonso >> >> >> ___ >> Python-es mailing list >> 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 >> >> >> >> >> >> >> ___ >> >> Python-es mailing list >> >> 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 >> >> > ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es
Re: [Python-es] Python 3.5.2
Mire señor Alonso, yo no le he respondido a la ligera. Primero, como le dije, el caso de Python no es una excepción, sino *la regla* en cuanto a lenguajes de programación *que implementan la exponenciación* en su sintaxis - es decir, la precedencia está dictada por el propio lenguaje. Es decir, no lo busque en C, o en C++, o en Java, etc. De hecho, me molesté en documentarme brevemente antes de responder. Y mira que no hay muchos lenguajes que implementen la exponenciación en su sintaxise, pero le dejo una lista (no exhaustiva), sin irme a casos demasiado exóticos: - ADA: los operadores de MAYOR precedencia son abs (valor absoluto), not (negación lógica) y ** (exponenciación). Dos niveles por encima de los operadores unarios, y uno por encima de la multiplicación/división. - D: El operador ^^ (exponenciación) está un nivel por encima de los unarios - FORTRAN: El operador ** tiene la precedencia más alta - Haskell: Los operadores ^, ^^ y ** (todos de exponenciación) están por debajo sólo de "!!", que se usa para acceder a los índices de arrays - PHP: ** está por encima de todos los demás operadores aritméticos (y mira que le tengo tirria a este lenguaje, pero por una vez...) - Python (pero esto ya lo sabíamos): ** está, como viene siendo habitual, por encima de los unarios, pero por debajo de los operadores de indización - R: ^ (exponenciación), está justo por encima de + y - unarios - Ruby: ** está justo por encima del - unario (pero justo por debajo del + unario, cosas de la vida) Casos que conozco donde la precedencia de los unarios está por encima: Prolog, JavaScript y algunos casos patológicos como Excel (véase más abajo). En cuanto a calculadoras, he usado la que tengo más a mano (en mi teléfono móvil) y: -4^2 = -16 (-4)^2 = 16 tal como esperaba. Y en el caso de las matemáticas, don Aurelio Baldor (al que no conocía, por cierto) podrá cantar misa en Latín, pero cualquier de mis profesores de matemáticas me hubiera tirado de las orejas si se ocurre interpretar que: -x^n = (-x)^n Aunque claro, siempre me animaron a usar paréntesis para que no cupiera duda. Si es cuestión de sacar referencias, pues nada. Citemos Wikipedia, que a su vez usa como referencias "Elementary Algebra for College Students" (Angel Allen) y "Taschebuch der Mathematik" (Grosche, Ziegler y Ziegler): There exist differing conventions concerning the unary operator − (usually read "minus"). *In written or printed mathematics*, the expression −32 is interpreted to mean 0 − (32) = −9, but in some applications and programming languages, notably Microsoft Office Excel (and other spreadsheet applications) and the programming language bc [...] Las negritas son mías, pero vamos, que la norma la que decimos nosotros, aunque algunos lenguajes de programación han escogido usar la convención contraria. Y Baldor, según vd., aunque la única copia a la que tenido acceso es una edición de 1985-86, en la que el capítulo XV no empieza hasta la página 155 y no aparece un sólo número negativo. Saludos, Ricardo 2016-12-24 6:52 GMT-10:00 Johnny Alonso : > 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. > c...@python.org] *En nombre de *Armando Ortega > *Enviado el:* sábado, 24 de diciembre de 2016 6
Re: [Python-es] Python 3.5.2
2016-12-24 17:52 GMT+01:00 Johnny Alonso : > 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²). La convención usual en libros de matemáticas superiores es que -2^2 (léase menos dos al cuadrado) es -4. Es decir, -x^2 = -(x^2) Por desgracia, los libros elementales no siguen siempre la misma convención, y tarde o temprano acaba causando confusión. Por ejemplo, la función x^2 (equis cuadrado) es convexa según casi cualquier libro avanzado, pero la mitad de los libros básicos la consideran cóncava. Y me sé tres definiciones diferentes de la transformada de Fourier, según si mires un libro de física teórica, óptica o ingeniería (seis si cuentas cuál es la directa y cuál es la inversa); y siempre hay que mirar cuál están usando exactamente. > 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. Sí que la implementa. dis.dis(lambda x:-x**2) 1 0 LOAD_FAST0 (x) 3 LOAD_CONST 1 (2) 6 BINARY_POWER 7 UNARY_NEGATIVE 8 RETURN_VALUE Si quieres negar tu propia clase, tienes que implementar el método __neg__(self) /David. ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es
Re: [Python-es] Python 3.5.2
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 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 mailto:kikocorre...@gmail.com> > escribió: El 23 de diciembre de 2016, 15:06, Johnny Alonso 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 __
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 <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 mailto:kikocorre...@gmail.com>> escribió: El 23 de diciembre de 2016, 15:06, Johnny Alonso 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 https://mail.python.org/mailman/listinfo/python-es ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es
Re: [Python-es] Python 3.5.2
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 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 mailto:kikocorre...@gmail.com> > escribió: El 23 de diciembre de 2016, 15:06, Johnny Alonso 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 https://mail.python.org/mailman/listinfo/python-es
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 : > Gracias Kiko, me queda claro, es excepción a las reglas algebraicas en > Python. > > > > *De:* Python-es [mailto:python-es-bounces+johnny.alonso.quintero=gmail. > c...@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 escribió: > > > > > > El 23 de diciembre de 2016, 15:06, Johnny Alonso < > 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 > https://mail.python.org/mailman/listinfo/python-es > > > > > > ___ > Python-es mailing list > 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
Re: [Python-es] Python 3.5.2
Gracias Kiko, me queda claro, es excepción a las reglas algebraicas en Python. De: Python-es [mailto:python-es-bounces+johnny.alonso.quintero=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 mailto:kikocorre...@gmail.com> > escribió: El 23 de diciembre de 2016, 15:06, Johnny Alonso 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 https://mail.python.org/mailman/listinfo/python-es
Re: [Python-es] Python 3.5.2
El operador ** tiene más prioridad que el - unario.El 23 dic. 2016 3:06 p. m., Johnny Alonso 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 # Ok4>>> pow(-2, 2) # Ok4>>> 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. Saludos, JohnnyAlonso___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es
[Python-es] Python 3.5.2
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. Saludos, JohnnyAlonso ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es
Re: [Python-es] Python 3.5.2
El 23 de diciembre de 2016, 16:05, Kiko escribió: > > > El 23 de diciembre de 2016, 15:06, Johnny Alonso < > 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 >> https://mail.python.org/mailman/listinfo/python-es >> >> > ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es
Re: [Python-es] Python 3.5.2
El 23 de diciembre de 2016, 15:06, Johnny Alonso < 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 > Saludos, JohnnyAlonso > > ___ > Python-es mailing list > 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
[Python-es] Python 3.5.2
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. Saludos, JohnnyAlonso ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es