como ya se me ha hecho costumbre, comparto los atascos que me encuentro a medida que voy aprendiendo un poco de python.
En esta ocasion he realizado un codigo para generar sumas aleatorias y preguntar al usuario la respuesta. Si el valor ingresado No es entero positivo, o no es un numero me debe mostrar un mensaje de error "EEE" y volver a preguntar.
si ingreso una respuesta incorrecta numerica me funciona bien, sin embargo no sucede lo mismo si ingreso texto. Tengo entendido que si la variable "answer" la denoto con un int antes de input me va a gnerar un ValueError si no ingreso un entero.
Comparto el codigo para su amable observacion de algun posible error u omision.
Código:
import random
def main():
level=get_level()
i=1
correct=0
while i<=10:
try:
x, y = generate_integer(level)
z=x+y
answer=int(input(f"{x} + {y} = "))
error=0
while answer != z:
print("EEE")
answer=int(input(f"{x} + {y} = "))
error+=1
if error==2:
print(f"{x} + {y} = {z}")
break
i+=1
i+=1
correct+=1
except ValueError:
pass
print("Score:",correct)
def get_level():
while True:
try:
level=int(input("Level: "))
if level not in [1,2,3]:
raise ValueError
return level
break
except ValueError:
pass
def generate_integer(level):
if level==1:
a=random.randrange(0,9)
b=random.randrange(0,9)
elif level==2:
a=random.randrange(10,99)
b=random.randrange(10,99)
else:
a=random.randrange(100,999)
b=random.randrange(100,999)
return a, b
if __name__=="__main__":
main()
No explico todo el codigo para no extender más el post, pero si requieren de más explicacion, con mucho gusto responderé.
agradezco las pistas que me puedan otorgar.
feliz noche
PD: He intentado con while answer != z or isnumeric(answer)==False: en la linea 20 pero sin resultados.

