Saltar al contenido

¿Cómo sumar valores pares e impares con un bucle for y sin condición if?

Basta ya de indagar por todo internet ya que estás al sitio adecuado, tenemos la solución que quieres y sin complicaciones.

Solución:

Puramente con fines educativos (y un poco de diversión), aquí hay una solución que no usa ningún for bucles en absoluto. (Por supuesto, en la lógica subyacente de las funciones, hay al menos cinco bucles).

num = list(range(int(input('Enter number: '))))

even = num[::2]
odd = num[1::2]

print('Even list:', even)
print('Odd list:', odd)

print('Even:', sum(even))
print('Odd:', sum(odd))

Producción:

Enter number: 10
Even list: [0, 2, 4, 6, 8]
Odd list: [1, 3, 5, 7, 9]
Even: 20
Odd: 25

¿Como funciona?

  • los input() función devuelve un str objeto, que se convierte en un número entero usando el int() función.
  • El entero está envuelto en el range() y list() funciones para convertir el número dado en una lista de valores dentro de ese rango.
    • Esta es una convención que usará/verá mucho a lo largo de su carrera en Python.
  • El corte de lista se utiliza para obtener cada segundo elemento de la lista. Dado que la lista se basa en cero, estos serán números pares.
  • Vuelva a dividir la misma lista, comenzando con el segundo elemento, y obtenga cada segundo elemento… números impares.
    • Enlace a una buena respuesta SO sobre el corte en Python.
  • El simplemente usa el sum() función para obtener las sumas.

for n in range(number):
    x += (1 - n % 2) * n
    y += (n % 2) * n

Usted pidió una solución con una bucle, pero ¿qué tal una solución con no ¿círculo?

Es bien sabido que la suma de los números de 1 a n es (n+1)*n/2. Así, la suma de incluso numeros es 2 * (m+1)*m/2 con m = n//2 (es decir floor(n/2)). Entonces, la suma de los impares se puede calcular mediante la suma de todos los números menos la suma de los números pares.

n = 12345
m = n // 2
e = (m+1)*m
o = (n+1)*n//2 - e

Verificación:

>>> e, e==sum(i for i in range(n+1) if i % 2 == 0)
38112102 True
>>> o, o==sum(i for i in range(n+1) if i % 2 == 1)
38105929 True

Nota: Esto calcula las sumas de números hasta y incluidon.

Si entiendes que te ha sido útil nuestro post, te agradeceríamos que lo compartas con más juniors de esta forma contrubuyes a dar difusión a nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *