My Coding Quiz #15 👨💻🛠️🧩
Welcome to the new installment of my series of Coding Quizzes, in which you will be able to test your knowledge and skills about programming and software development in a simple and fun way. If you want to learn more about it visit my blog here on Hive and the first post where I introduced it.
Without further ado, here's the riddle...
By @eniolw
What's your choice?
Solution to the previous quiz: 1. Line 1 creates the variables a
and b
using the unpacking notation, something very well known and practical in Python that resembles to the destructuring of Javascript.
Then we modify the value of b
in line 2 in a slightly tricky way, but it serves to show how we can use the -
operator to change the sign of the value of numeric variables. The expression is equivalent to b = (-1) - (-3), which is b = -1 + 3, which is b = 2 .
Line 3 presents the most interesting and least known aspect of the exercise. In Python, the ^
operator is not the exponentiation operator; that would be **
in Python. If that was what you had in mind, then you would have chosen 9 as the outcome, but that was a red herring.
Instead, ^
is a bitwise exclusive-OR operator, equivalent to the XOR function. In a nutshell, it compares each bit of both operands and returns one (1) if only one of the two compared bits is 1 or returns zero (0) otherwise.
However, we see that the numbers supplied to the ^
operator in the given code are base-decimal integers, not binary, so Python converts them to binary in order to XOR them. The result of the 3 ^ 2 operation is therefore 1, which is the value assigned to c
and printed at the final line.
This exercise involved @hibadurahmon, @splash-of-angs63 and @rafaelaquino, with @splash-of-angs63 providing an explanation of why the output was obtained. Very good!
If you want to blog about computer science and programming content, I invite you to join Hive and participate in its communities, such as STEM-social, Develop Spanish, Programming & Dev, Hive Learners and others.
Mi Quiz de Programación #15 👨💻🛠️🧩
Bienvenido a mi nueva serie de Quizzes de Programación, en la cual podrás poner a prueba tus conocimientos y habilidades sobre programación y desarrollo de software de una manera sencilla y divertida. Si quieres aprender más sobre ella visita mi blog aquí en Hive y el primer post donde la presenté.
Sin más preámbulos, he aquí el acertijo...
Por @eniolw
¿Cuál es tu elección?
Solución al quiz anterior: 1. Las línea 1 crea las variables a
y b
usando la notación de desempaquetado de secuencias, algo muy bien conocido y práctico en Python y que se asemeja al destructuring de Javascript.
Luego modificamos el valor de b
en la línea 2 de una manera un poco truquera, pero que sirve para poner en evidencia cómo podemos usar el operador -
para cambiar el signo del valor de las variables numéricas. La expresión es equivalente a b = (-1) - (-3), lo cual es b = -1 + 3, lo cual es b = 2.
La línea 3 presenta el aspecto más interesante y menos conocido del ejercicio. En Python, el operador ^
no es el de exponenciación; ese sería **
en Python. Si eso era lo que tenías en mente, entonces habrías escogido el resultado 9, pero era una pista falsa.
En su lugar, ^
es un operador bitwise de Ó exclusiva, equivalente a la función XOR. En palabras puntuales, esta compara cada bit de ambos operandos y devuelve uno (1) si solo uno de los dos bits comparados es 1 o devuelve cero (0) en caso contrario.
Sin embargo, vemos que los números provistos al operador ^
en el código dado son enteros de base decimal, no binarios, por lo Python los convierte a binarios para poder aplicarles la función XOR. El resultado de la operación 3 ^ 2, por tanto, es 1, que es valor asignado a c
e impreso en la línea final.
En este ejercicio participaron @hibadurahmon, @splash-of-angs63 y @rafaelaquino, con @splash-of-angs63 proveyendo una explicación del porqué la salida obtenida. ¡Muy bien!
Si quieres bloguear sobre contenido informático y de programación, te invito a unirte a Hive y participar en sus comunidades, tales como STEM-social, Develop Spanish, Programming & Dev, Hive Learners y otras.