PyQuiz 44 – División entera negativa en Python

El reto
print(-7 // 2)¿Cuál es el resultado?
- a) -3
- b) -4
- c) -3.5
Piensa tu respuesta antes de seguir leyendo…
Concepto: División entera negativa
El operador de división entera // en Python devuelve el resultado redondeado hacia menos infinito (floor division), no hacia cero. Esto marca una diferencia importante con los números negativos.
Para -7 // 2: la división exacta es -3.5. Redondear hacia menos infinito significa buscar el entero más grande que sea menor o igual que -3.5, que es -4 (no -3). En lenguajes como C o Java, la división entera trunca hacia cero (daría -3), pero Python usa el comportamiento matemáticamente más coherente del suelo.
print(7 // 2) # 3 — suelo de 3.5
print(-7 // 2) # -4 — suelo de -3.5 (NO -3)
print(7 // -2) # -4 — suelo de -3.5
print(-7 // -2) # 3 — suelo de 3.5Paso a paso
-7 // 2— Se realiza la división entera de-7entre2.- La división exacta sería
-7 / 2 = -3.5. - El operador
//aplica la función suelo (floor): el entero más grande que sea ≤-3.5. - Entre
-4y-3, el más grande que sigue siendo ≤-3.5es-4. print(-7 // 2)— Se imprime-4.
📥 Llévate el cheatsheet de Python (gratis)
PDF de 6 páginas con lo esencial: tipos, condicionales, bucles, estructuras de datos, funciones y los errores que más vas a cometer. Para tener al lado mientras programas.
Sin spam. Te apuntas a la lista, descargas el cheatsheet y recibes contenido de Python cada semana.
Solución
Respuesta correcta: B) -4
// redondea hacia menos infinito (floor). -7/2 = -3.5, floor(-3.5) = -4.
Sabías que…
El operador módulo % en Python también sigue la lógica del suelo y está relacionado con // mediante la identidad a == (a // b) * b + (a % b):
# Verificación de la identidad
a, b = -7, 2
q = a // b # -4
r = a % b # 1 (NO -1, como en algunos otros lenguajes)
print(q * b + r) # (-4)*2 + 1 = -8 + 1 = -7
# En Python, el módulo siempre tiene el signo del divisor
print(-7 % 2) # 1 (signo positivo como el divisor 2)
print(7 % -2) # -1 (signo negativo como el divisor -2)
# math.trunc() para truncar hacia cero (como C):
import math
print(math.trunc(-7 / 2)) # -3Prueba tú mismo
Sin ejecutar el código, ¿cuál es el resultado de -10 // 3? ¿Y el de 10 // -3? Recuerda: siempre se redondea hacia menos infinito.
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: Operadores y expresiones
¿Quieres aprender Python en orden, no a saltos?
Esto que has leído es solo una pieza. En El Pythonista lo verás todo encadenado: 11 módulos, 37+ horas de vídeo, 734 actividades y un proyecto real (MovieTracker) que crece contigo desde la primera variable hasta el deploy a producción.
37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía
