Qué significan estos operadores(**, ^, %, //)? [cerrado]
Distinta de la estándar +
, -
, *
y /
operadores; pero, ¿qué significa (**
, ^
, %
, //
) ?
>>> 9+float(2) # addition
11.0
>>> 9-float(2) # subtraction
7.0
>>> 9*float(2) # multiplication
18.0
>>> 9/float(2) # division
4.5
>>>
>>> 9**float(2) # This looks like a square, (i.e. power 2)
81.0
>>> 9**float(3) # So ** is equivalent to `math.pow(x,p)` ?
729.0
¿Qué tal el operador ^
?
>>> 9^int(2) # What is `^` in `x^u` , it only allows `int` for `u`
11
>>> 9^int(3)
10
>>> 9^int(4)
13
>>> 9^int(5)
12
>>> 9^int(6)
15
>>> 9^int(7)
14
>>> 9^int(8)
1
>>> 9^int(9)
0
>>> 9^int(10)
3
>>> 9^int(11)
2
>>> 9^int(12)
5
%
in x%m
devuelve un módulo de resto normal, pero solo si m < x
, ¿por qué es así? ¿Qué hace %
?
>>> 9%float(2)
1.0
>>> 9%float(3)
0.0
>>> 9%float(4)
1.0
>>> 9%float(5)
4.0
>>> 9%float(6)
3.0
>>> 9%float(7)
2.0
>>> 9%float(8)
1.0
>>> 9%float(9)
0.0
>>> 9%float(10)
9.0
>>> 9%float(11)
9.0
>>> 9%float(12)
9.0
¿Qué tal el operador //
? ¿qué hace?
>>> 9//float(2)
4.0
>>> 9//float(3)
3.0
>>> 9//float(4)
2.0
>>> 9//float(5)
1.0
>>> 9//float(6)
1.0
>>> 9//float(7)
1.0
>>> 9//float(8)
1.0
>>> 9//float(9)
1.0
>>> 9//float(1)
9.0
>>> 9//float(0.5)
18.0
3 answers
-
**
: exponenciación -
^
: exclusivo-o (bitwise) -
%
: módulo -
//
: dividir con resultado integral (descartar resto)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-04 03:07:35
Puedes encontrar todos esos operadores en la referencia del lenguaje Python , aunque tendrás que desplazarte un poco para encontrarlos todos. Como otras respuestas han dicho:
- El operador
**
hace la exponenciación.a ** b
esa
elevado al poderb
. El mismo símbolo**
también se usa en el argumento de función y en llamar notaciones, con un significado diferente (pasar y recibir argumentos de palabras clave arbitrarios). - El operador
^
hace un xor binario.a ^ b
will devuelve un valor con solo los bits establecidos ena
o enb
pero no ambos. Este es simple! - El operador
%
es principalmente para encontrar el módulo de dos enteros.a % b
devuelve el resto después de dividira
porb
. A diferencia de los operadores de módulo en algunos otros lenguajes de programación (como C), en Python un módulo tendrá el mismo signo queb
, en lugar del mismo signo quea
. El mismo operador también se utiliza para el estilo "antiguo" de formato de cadena, por lo quea % b
puede devolver un string ifa
es una cadena de formato yb
es un valor (o tupla de valores) que se puede insertar ena
. - El operador
//
hace la versión de Python de la división entera. La división entera de Python no es exactamente la misma que la división entera ofrecida por algunos otros lenguajes (como C), ya que redondea hacia infinito negativo, en lugar de hacia cero. Junto con el operador de módulo, se puede decir quea == (a // b)*b + (a % b)
. En Python 2, la división de piso es el comportamiento predeterminado cuando dividir dos enteros (usando el operador de división normal/
). Dado que esto puede ser inesperado (especialmente cuando no eres exigente con los tipos de números que obtienes como argumentos para una función), Python 3 ha cambiado para hacer que la división "verdadera" (coma flotante) sea la norma para la división que se redondearía de otra manera, y hará la división "piso" solo cuando se solicite explícitamente. (También puede obtener el nuevo comportamiento en Python 2 poniendofrom __future__ import division
en la parte superior de sus archivos. Recomiendo encarecidamente it!)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-04 14:24:57
Tienes razón en que **
es la función de potencia.
^
es XOR bit a bit.
%
es de hecho la operación de módulo, pero tenga en cuenta que para números positivos, x % m = x
siempre que m > x
. Esto se desprende de la definición de módulo. (Además, Python especifica x % m
para tener el signo de m
.)
//
es una operación de división que devuelve un entero, descartando el resto. Esta es la forma estándar de división que usa /
en la mayoría de los lenguajes de programación. Sin embargo, Python 3 cambió el comportamiento de /
para realizar la división en coma flotante incluso si los argumentos son enteros. El operador //
se introdujo en Python 2.6 y Python 3 para proporcionar un operador de división de enteros que se comportaría consistentemente entre Python 2 y Python 3. Esto significa:
| context | `/` behavior | `//` behavior |
---------------------------------------------------------------------------
| floating-point arguments, Python 2 & 3 | float division | int divison |
---------------------------------------------------------------------------
| integer arguments, python 2 | int division | int division |
---------------------------------------------------------------------------
| integer arguments, python 3 | float division | int division |
Para más detalles, vea esta pregunta: División en Python 2.7. y 3.3
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-14 23:39:58