[ Foro de Python ]

Python, hacer que usuario detenga ciclo for mientras se ejecuta.

17-Jan-2023 01:36
Invitado (cairo)
2 Respuestas

Buenas, voy a ser directo...
Quiero recrear un juego de apuestas llamado "Crash" (creo que ese es el nombre), y estoy teniendo un problema el cual no encuentro la solución, soy nuevo en esto de Python y no sé si es posible, pero necesito que el usuario detenga un ciclo for, el cual se suma sucesivamente de 0.01, en el punto que él quiera.

Ej: ejecutó el programa, y el número empieza por 1.00 y va aumentando se +0.01 cada vez, llega a 1.34 y quiero detenerlo ahí. cómo podría hacer?
Dejo la parte (incompleta) aquí:

numero = random.randint(105, 500)
for i in range(100, numero):
time.sleep(0.05)
a = i / 100
print("El número va por... " + str(a))


19-Jan-2023 18:27
Invitado (jaime)

hola cairo

tal y como lo explicas hay un error, pues dices que empiezas en 1.00 y realmente empiezas en 105, ¿¿??, será porque es parte del código y el 1.00 esta en otro sitio

si lo quieres hacer con for y quieres salir en 134, puedes:
   - sumar la cantidad correspondiente al número de inicio en el range, con lo que cuando llegues a la cifra convenida finalizará el bucle se parara solo
   - o introducir un if en el bucle que compruebe si llegaste y si llegaste break, con lo que saldrás del bucle

también puedes usar un while(numero < 134) y hacer los incrementos dentro del bucle

como ves tienes varias opciones y seguro que hay mas ...

suerte ;-)


16-Mar-2023 22:02
Invitado (Alejandro Andrade)

¡Hola! Lo que puedes hacer es utilizar la función 'input()' para que el usuario pueda detener el ciclo en el momento que lo desee. La idea es que en cada iteración del ciclo, se pregunte si el usuario quiere detenerlo, y en caso afirmativo se rompa el ciclo.

Por ejemplo:

import random
import time

numero = random.randint(105, 500)
for i in range(100, numero):
   time.sleep(0.05)
   a = i / 100
   print("El número va por... " + str(a))
   respuesta = input("¿Quieres detener el ciclo? (S/N)")
   if respuesta.lower() == 's':
       break

En este caso, se pregunta al usuario si quiere detener el ciclo después de cada iteración, y si responde 'S' (puede ser en mayúsculas o minúsculas gracias a la función 'lower()'), se rompe el ciclo.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)