Home Foros Foro dudas Foro Python Problema de Python Básico Respuesta a: Problema de Python Básico

Respuesta a: Problema de Python Básico

Home Foros Foro dudas Foro Python Problema de Python Básico Respuesta a: Problema de Python Básico

#16264

Jaime
Participante

En primer lugar, he tenido que quitar todo el texto extra que mete el copia y pega y no sé si el código que me sale es exactamente igual que el tuyo. Me queda esto:

x = 1

h = 0

y = x % 3

z = x % 5

while x < 10:

if y == 0:

h = h + x

elif z == 0:

h = h + x

else:

continue

x = x + 1

A ver, en primer lugar, estás calculando el valor de y y z fuera del bucle, por lo que por mucho que cambie el valor de x, los valores de y y z nunca van a cambiar. Además, estás usando la cláusula continue tanto de forma incorrecta como innecesaria. Recuerda que esta cláusula lo que hace es saltar a la siguiente iteración del bucle, cosa que, si quieres que se ejecute con todos los valores hasta 10, ya el bucle mismo lo hace, pero además, lo usas antes de cambiar el valor de x, con lo que estás en un bucle infinito. Quitando el else con el continue y metiendo el calculo de y y z dentro del bucle funciona.

Pero, además, y solo como consejo, fíjate que la operación que realizas tanto si y vale 0 como si z vale 0 es la misma, con lo que puedes usar una misma condición para los dos casos usando el operador OR, y ya por último, no hace falta que calcules el módulo primero y lo guardes en una variable, sino que puedes realizar la comparación directamente con la operación (x % 3 == 0)

Espero haberte ayudado con todo el rollo que acabo de soltar.