Elaboracion de formularios con Python

Formulario o encuesta con Python

Formulario con Python: Elaborar un formulario con Python (por ejemplo para una encuesta) es muy sencillo gracias a la función input. Tan solo debemos tener claro que la función input devuelve valores de tipo <<string>> esto es, de tipo alfanumérico, por eso para realizar operaciones matemáticas con esas respuestas deberíamos utlizar la función int para transformarlo a numérico.

edad = input('¿Cuál es tu edad? ')
edad = int(edad) # edad se convierte aquí en valor numérico, gracias a la función int()

Para crear un bucle que genere multiples cuestionarios utilizamos el bucle while, que estará en funcionamiento mientras la respuesta que devuelva nuestro cuestionario sea verdadero, es decir que obtenga respuesta.

Como ya hemos visto en database-academy la función if nos permitirá evaluar las respuestas introducidas en el cuestionario y eso condicionará el flujo de código dependiende de los valores introducidos.

Así, la edad recogida determinará la pregunta que salte y el valor ocupacion será cumplimentado bien por ocupacion_1 o bien por ocupacion_2 dependiendo de la respuesta que haya sido introducida en el cuestionario.

ocupacion obtendrá el valor que sea diferente a nada, es decir ! = «» diferente a una cadena de texto vacia.

Pero comencemos por el principio, en primer lugar vamos a importar el modulo OS de Python para ubicarnos en una carpeta en particular donde queramos almacenar el fichero con las respuestas de nuestro encuestador o formulario Python.

import os
os.chdir("/Users/ruizg/OneDrive/Documentos/python/Python - Handbook ")

A continuación y mediante el bucle while lanzaremos el cuestionario que funcionará mientras reciba valores, es decir que permanezca devolviendo True al bucle while:

while True:
    print("**--**--**--**--**--Survey database-academy.eu--**--**--**--**--**")
    final = input('Para finalizar teclea << quit >> ahora, para ir al cuestonario pulsa enter \n')
    if final == 'quit': break
    nombre = input('¿Cuál es tu nombre? ')
    edad = input('¿Cuál es tu edad? ')
    edad = int(edad)
    sexo = input('¿Cuál es tu genero? escribe "h" o "m" -> ')
    pais = input('¿Cuál es tu país? ')
    ciudad = input(f'Nos has dicho que tu pais es ->{pais.title()} ¿De qué ciudad? ')
    ocupacion_1=""
    ocupacion_2=""
    if edad < 18: ocupacion_1 = input('¿Qué estudias? ')
    if ocupacion_1 != "" : ocupacion = ocupacion_1
    if edad > 18: ocupacion_2 = input('¿En qué trabajas? ')
    if ocupacion_2 != "" : ocupacion = ocupacion_2
    if sexo == "hombre" or sexo == "h": hombre_1 = input('¿pregunta hombre? ')
    if sexo == "mujer" or sexo == "m": mujer_1 = input('¿pregunta mujer? ')
    aficiones = input("¿Cuáles son tus aficiones cotidianas? ")
    opinion_marca = input("¿En una escala de 0 a 10 cuánto recomendarías nuestra empresa a un familiar o amigo? ")
    opinion_marca = int(opinion_marca)
    if opinion_marca < 8: opinion_marca_2 = input(f"Mmm... Justifica tu {opinion_marca} en recomendacion de nuestra marca. Porque   nos valoras con un {opinion_marca}. ")
    if opinion_marca >= 8: opinion_marca_2 = input(f"Excelente! Porque has respondido con {opinion_marca} en recomendacion de nuestra marca. ")
    file = open("survey_quest.csv","a")
    file.write(f"'{nombre.title()}',{edad},'{sexo.title()}','{pais.title()}','{ocupacion.title()}','{aficiones}',{opinion_marca},'{opinion_marca_2}'\n")
    file.close()
    if opinion_marca >= 8: print("Mil gracias por todo, nos alegramos de que estés feliz con nuestra empresa!")
    if opinion_marca < 8: print("Vamos a hacer todo lo posible por mejorar! Gracias por tus recomendaciones!")

print(f"{nombre},{edad},{sexo},{pais},{ocupacion},{aficiones}\n")

Copia y pega el conjunto del código en Spyder y ejecutalo con control + enter, cambiando únicamente la ruta de tu ordenador, debería funcionar. Más abajo tienes un pantallazo completo del ejercicio por si quieres contrastar alguna línea del código. Es fácil modificarlo para introducir las preguntas que quieras llevar a cabo.

El uso de break en el bucle while del formulario

Hemos creado una variable llamada final, que si recibe el valor ‘quit’ ejecutará un << break >> que interrumpirá el flujo de código.

Input es la función utilizada en Python para preguntar por valores, dándole el valor nombre por ejemplo, almacenará el valor devuelto por el usuario en la variable ‘nombre’, a la pregunta: ¿Cuál es tu nombre?.

La función int para transformar un texto insertado dentro del formulario

En el caso de la edad y al devolver imput un valor de tipo << string >> siempre, debemos transformarlo en integer con la función int, que transformará la respuesta en un valor cuantitativo.

Estructura de control de flujo de código: IF para estructurar las preguntas que se realizan en el formulario

En el caso de la variable edad, esto cobra especial importancia, ya que la edad dependiendo del valor que tome, condicionará la formulación de la pregunta estudias o trabajas, almacenándose en ambos casos en la variable ocupacion. Ello, siempre que el valor de ocupacion_1 u ocupacion_2 sean diferentes a nada o a un texto vacío.

Las preguntas <<pregunta mujer>> y <<pregunta hombre>> también son condicionadas por los valores introducidos en la variable sexo. Es decir, si la respuesta es «mujer» o «m» la pregunta lanzada posteriormente será diferente a si la respuesta almacenada en sexo es «hombre» o «h» . La respuesta dada, funciona como argumento y la variable funciona como parámetro de entrada que condiciona de nuevo el flujo de código.

El uso de file

Además, cabe explicar el uso de file, que permite el almacenamiento de los datos recogidos mediante el método append, identificado con «a» que irá agregando al final del fichero cada uno de los registros almacenados en la memoria de Python, volcando las respuestas cada vez que pasé por esa línea el flujo de código. En esta ocasion sobre un fichero .csv Si en lugar de «a», se inserta el valor «w» sobreescribirá sobre el fichero si encuentra algo escrito en él con anterioridad.

Para acabar el cuestionario o detener el bucle while, hemos creado la variable final como se ha dicho más arriba. Ello romperá respondiendo << quit >> que ejecutará un break o rotura del bucle, especificamente diseñado para interrumpir el flujo de código o lo que es lo mismo, salir del formulario o encuesta.

Como sabéis, podéis ejecutar vuestro cuestionario desde la linea de comandos de windows << CMD >> evitando que otras personas tengan acceso al código fuente del programa si queréis dejar en manos de un usuario no programador la cumplimentación de la encuesta o formulario. Para ello escribid > py de Python y el nombre del fichero que hemos creado, en mi caso lo he llamado survey_quest_1.py

formularios y encuestas con Python
Vista de la ejecución desde la linea de comandos de Windows.

Generando ficheros .csv

Abriendo con el blog de notas o excel el fichero creado: survey_quest.csv podréis ver las respuestas almacenadas por el programa que hemos creado:

formularios y encuestas con Python
Resultados almacenados en fichero csv

Como habéis comprobado elaborar cuestionarios en Python es de suma facilidad. El pequeño software creado irá almacenando encuestas siempre que sea ejecutado y añandiéndolas a las que se encuentren en el fichero. Pudiendo apagar y encender el ordenador y ejecutar la encuesta cuando se desee. Conservará los antiguos valores y añadirá los nuevos gracias al valor append, utilizado en el método open.

Así quedaría el código completo del ejercicio:

Formulario en Python. Encuesta en Python. Python’s Survey.

Acude a nuestra sección de Python pinchando a continuación -> Python

Mucho más sobre Python en W3schools -> Python

En otro post veremos como llevar a cabo un pequeño proceso de datos que aporte los estadísticos fundamentales de una encuesta.

Autor: ignacio

Profesor de Sistemas de Gestión de Información

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *