Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Consulta por un problema de razonamiento con un FOR
#1
Buenas tardes.
Se que es muy basica mi pregunta, pero no logro entenderlo.
Tengo este ejercicio:

Código:
s = 0
for n in range(1, 10):
    if n % 2 != 0:
      continue;
    s += n
else:
     s+=5
print(s)

Me da como resultado 25, pero no logro entender el razonamiento para ello.

Me pueden tirar una soga, por favor??

Muchas gracias
Responder
#2
Hola. Hay que tener en claro qué hace cada cosa:

1) range(1, 10) genera una lista de números del 1 al 9.
2) El operador % calcula el resto de una división. Generalmente se usa (como en este caso) para saber si un número es par o impar. Si x % 2 == 0, el número es par.
3) "continue" hace que el bucle continúe con el siguiente elemento de la lista.
3) x += y es un atajo para x = x + y.
4) El "else" en un bucle "for" se ejecuta luego de todas las iteraciones si el bucle no fue terminado por un "break". No obstante, este uso del "else" es rarísimo. En mis años como programador de Python jamás lo vi utilizarse seriamente más que en ejercitaciones. Incluso los mismos programadores de Python desaconsejan su uso. Simplemente se mantiene por compatibilidad con versiones anteriores.

Así, el bucle está sumando todos los números entre 1 y 9, pero omitiendo aquellos en los que n % 2 != 0 (o sea, los impares). De modo que 2 + 4 + 6 + 8 = 20, y al final el "else" agrega el 5, lo cual da 25.

Saludos!
Responder
#3
Muchas gracias por la explicacion Francisco.
Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)