Puede que alguna vez te encuentres con un desafiante código donde necesites pedirle una confirmación al usuario para poder terminar cierta tarea, pero ¿Sabes cómo hacerlo?.
No te preocupes en este tutorial vamos a aprender cómo hacerlo, así que vamos a ello.
Fíjate que la variable options solo tiene dos valores “YES” y “NOT” y que además es una tupla. Esto lo hacemos con el fin de que el código solo pueda tener dos variables al momento de preguntar la confirmación.
La variable _counter _la definimos en 0 porque después vamos a imprimir un contador y la tercer variable que es continue_playing es para obtener una segunda confirmación al momento de detener el código.
Estas tres variables son la base de nuestro código, van a ser la estructura para que el código pueda funcionar correctamente y se detenga cuando queramos. Continuemos ahora si con el código que va a interactuar con el usuario.
Te debería quedar así.
Esto quiere decir que mientras (while) counter sea menor a 10 y continue_playing sea (True), counter se sumara 1 así mismo e imprimira su valor.
Muy bien, ahora es momento de pedir la confirmación del usuario, para ello hay que definir el momento en el que quieres que se pida la confirmación por ejemplo la podemos pedir justo en la mitad de la ejecución del código.
como queremos que el usuario pueda interactuar con nuestro código necesitamos establecer una variable (decision) que guarde el valor que digitara el usuario y para ello haremos uso del input. Sin embargo, las opciones que el programa reconocera son explicitamente “YES” y “NOT” exactamente en mayusculas. Esto puede suponer un problema ya que el usuario puede escribir “yes” o "not"pero al estar en minusculas el código no lo va a relacionar con sus opciones y por ende nuestro código no funcionara.
para corregir esto necesitamos hacer uso de una función que pase ese valor introducido por el usuario a mayusculas la cual es .upper().
EL código debería quedarte así:
Esto lo podemos traducir en que si counter es igual a 10 se dentendra el contador y nos preguntara si queremos continuar, a lo que dejara a libre elección del usuario por medio de un input, sin embargo. Para evitar que errores simples como que el usuario escriba “yes” en vez de “YES” hicimos uso de la función .upper() para convertir ese “yes” a un “YES”, la cual se establece de la siguiente manera decision.upper().
Ok, ya tienes un gran avance en el código y puedes parar el contador para que el usuario pueda escoger si quiere continuar o si por el contrario desea parar. Sin embargo, todavia el programa no puede iterar la respuesta del usuario porque no le hemos dicho que hacer con ese valor. Vamos a definirlo haciendo uso de las condicionales, así que vamos a ello.
Esta interpretación quedaria tal que así:
ya sabes, si decision es igual a “YES” counter seguira de forma normal y parara hasta el ultimo valor especificado. ahora, si decision es igual a “NOT” counter para e imprime “Thanks for playing” dando a entender que el programa a terminado de ejecutarse y establecemos continue_playing como False para tener una segunda confirmación y que el progrma pare definitivamente. (Acuerdate que al principio del codigo definimos que mientras counter sea menor a 20 y continue_playing sea True el programa se ejecutara)
Sin embargo el usuario puede escribir una opción que no sea ni “YES” ni “NOT”. Pero no te preocupes con este código vamos a ir un paso delante.
Esto lo podemos hacer siguiendo la lógica de las condicionales que hemos utilizado, acuérdate que ya establecimos un if y un elif con un posible resultado pero si el resultado no cumple en ningún caso utilizaremos else y como queremos que este else solo funcione cuando la decisión que tomo el usuario no este dentro de las opciones validas, podemos definir exactamente que mientras decision no este en options el programa pregunte infinitamente hasta obtener “YES” o “NOT”
El código nos debe quedar así:
Bien, ya casi terminas el código solo una pequeña pregunta: ¿Si el usuario en primer lugar no introduce una respuesta valida y cuando el programa le pregunta de nuevo y el contesta ahora con una repuesta valida , quieres que el programa siga preguntando infinitamente?
No cierto. Eso es lo que es capaz de hacer nuestro código por el momento, así que vamos a escribir unas líneas de código más que nos permitan interactuar con esta respuesta del usuario.
Veamos el código.
En este paso usamos la misma lógica que en el paso numero 4, pero tenemos que ir un paso delante del usuario. En este momento nuestro programa es capaz de escribir los números del 1 al 20 pidiendo una confirmación justo en la mitad, es capaz de iterar una opción valida en primer lugar. Saber cuando la opción no es valida para volver a preguntar hasta obtener una opción valida e iterar esa respuesta obtenida a partir de la segunda pregunta.
Pero que pasa si el usuario decide continuar al momento de confirmar, el programa continuara hasta el 20 y se detendrá. Sin embargo, una mejor idea es hacer que counter llegue hasta el máximo valor establecido por nosotros y que de igual forma nos arroje un texto que nos indique que el programa ya paro.
Mira cómo debe quedar:
Este ultimo paso es mucho más claro con una vista completa del código, así que mira el código completo:
Felicitaciones, Has llegado al final de este tutorial. Espero te haya sido de gran ayuda, Ahora puedes pedir una confirmación al usuario antes de completar una actividad especifica siendo capaz de predecir sus posibles respuestas. Sin embargo, queda mucho camino por recorrer. Así que recuerda: NUNCA PARES DE APRENDER. Buena suerte en tus próximos proyectos c: