Proy1Sec10+Grupo+No.+5

Universidad del Valle de Guatemala Ingrid Lemus Sologaistoa 07189 Programación José Manuel Figueroa 09102 Grupo 5

Usted pensará un número del 1 al 63 y la computadora lo adivinará en seis pasos. El usuario piensa en un número, la computadora desplegará una lista de 32 números, el usuario contestará si el número que pensó está en la lista, y luego se volverá a desplegar otra lista y el usuario deberá de contestar si su número está en esta segunda lista. Se repite el mismo proceso hasta que se hayan desplegado seis listas y el usuario haya contestado seis veces si el número que pensó en la lista. Finalmente, la computadora desplegará cuál es el número que el usuario pensó.
 * __ Manual de usuario. Adivinar un número (1-63) en seis pasos __**
 * Resumen: **

Para jugar “Adivinar un número (1-63) en seis pasos”, el usuario deberá de abrir Python, abrir el programa dentro de Python llamado “adivinar_un_numero_en_seis_pasos.py”, y correrlo presionando F5. La primera instrucción que se desplegará será la siguiente: 1. Piense un número del 1 al 63 y el programa lo adivinará en seis pasos. El usuario deberá pensar en un número ENTERO.
 * Instrucciones: **

2. Se desplegará la siguiente lista: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 3. Luego se desplegará esta pregunta: ¿Su número está en esta lista? Conteste si o no. (1) 4. El usuario deberá contestar sí o no.

En caso de que el usuario no conteste “sí” o “no”, el programa (la computadora) volverá a preguntarle al usuario si su número está en la lista hasta que la respuesta sea “sí” o “no”. El programa acepta como respuestas afirmativas: Sí, sí, si, SI, SÍ, sI, sÍ Y acepta como respuestas negativas: No, no, NO, nO

5. Se volverá a desplegar otra lista, y luego la misma pregunta (1).

Se repetirá el mismo proceso de que el programa despliega listas y el usuario responde, hasta que se haya desplegado un total de seis listas y el usuario haya respondido seis veces correctamente (si o no) la pregunta.

6. Se desplegará en pantalla: ¿Desea volver a jugar? Si el usuario responde: Sí, sí, si, SI, SÍ, sI, sÍ, entonces se volverá a pedir al usuario que piense en un número y se repetirán los pasos 1 al 6. Si el usuario responde distinto a: Sí, sí, si, SI, SÍ, sI, sÍ, entonces el programa llegará a su fin.

El número que piensa el usuario deberá estar entre 1 y 63, y deberá de ser un entero. Las respuestas del usuario deberán de ser “sí” o “no” con sus variaciones [1].
 * Restricciones: **

Si tiene alguna duda, sugerencia o consulta contacte a: José Figueroa en jfigueroa@gmail.com Ingrid Lemus en ilemus@gmail.com
 * Consultas: **

[1] Variaciones se refiere a diferentes maneras de escribir la respuesta (con tilde, mayúsculas, etc).

**__LINK DE VIDEO DE NARRACION DE EJECUCION DEL PROGRAMA: __** http://www.screencast.com/users/josefig10/folders/Jing/media/953ac447-b43e-4627-997c-7b990ebc3206

Universidad del Valle de Guatemala Ingrid Lemus Sologaistoa 07189 Programación José Manuel Figueroa 09102 Grupo 5  I.   Análisis de requerimientos Meta: El programa debe adivinar el número (entre 1 y 63) que el usuario está pensando en un máximo de 6 pasos. Datos: Números enteros entre 1 y 63 Condiciones: ·  El número escogido por el usuario debe ser mayor o igual a 1 y menor o igual a 63.  ·  El número escogido debe ser entero.  ·  El programa puede adivinar en únicamente seis pasos.  ·  Se despliegan seis listas con 32 números en cada lista.  Proceso: <span style="mso-ansi-language: ES-GT; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; msoansilanguage: ES-GT; msofareastfontfamily: Calibri; msobidifontfamily: Calibri; msolist: Ignore;"> 1. El usuario piensa un número entero entre 1 y 63. <span style="mso-ansi-language: ES-GT; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; msoansilanguage: ES-GT; msofareastfontfamily: Calibri; msobidifontfamily: Calibri; msolist: Ignore;"> 2. Se despliega una lista con 32 números en pantalla. <span style="mso-ansi-language: ES-GT; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; msoansilanguage: ES-GT; msofareastfontfamily: Calibri; msobidifontfamily: Calibri; msolist: Ignore;"> 3. El usuario debe determinar si el número que escogió está en la lista, respondiendo “sí” o “no” [|[1]]. <span style="mso-ansi-language: ES-GT; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; msoansilanguage: ES-GT; msofareastfontfamily: Calibri; msobidifontfamily: Calibri; msolist: Ignore;"> 4. Según la lista que se despliega, el programa suma empieza a sumar un número clave si la respuesta es afirmativa. Si la respuesta es negativa, no suma nada. <span style="mso-ansi-language: ES-GT; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; msoansilanguage: ES-GT; msofareastfontfamily: Calibri; msobidifontfamily: Calibri; msolist: Ignore;"> 5. Luego de repetir los pasos 2-4 seis veces, el programa determina el número que el usuario pensó. <span style="mso-ansi-language: ES-GT; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; msoansilanguage: ES-GT; msofareastfontfamily: Calibri; msobidifontfamily: Calibri; msolist: Ignore;"> a.   Si el programa no puede llegar a ninguna conclusión, se despliega mensaje de “Error: el usuario contestó mal alguna pregunta.” Esto ocurre cuando el usuario ingresa para todas sus respuestas “no”. <span style="mso-ansi-language: ES-GT; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; msoansilanguage: ES-GT; msofareastfontfamily: Calibri; msobidifontfamily: Calibri; msolist: Ignore;"> b.   Se despliega en pantalla: “El número que usted pensó es n.”, donde n corresponde al número pensado por el usuario. Se plantearon diferentes maneras de que el programa adivinara el número. En la primera forma se pensó formar matrices e ir eliminando números hasta llegar a tener solamente uno. Sin embargo, esta forma no funcionó. La siguiente forma se basó en un descubrimiento: la primera lista empezaba con el número 1 y los números desplegados eran uno sí uno no; la segunda lista empezaba con el número dos y seguía dos sí y dos no; la tercera empezaba en cuatro y seguía cuatro sí y cuatro no; y así sucesivamente hasta llegar a la sexta lista, la cual empezaba en 32 y eran 32 sí y 32 no. Por lo tanto, había un número clave para cada lista. El número clave de la primer lista es 1, el de la segunda es 2, el de la tercera es 4, el de la cuarta es 8, el de la quinta es 16 y el de la 6 es 32. Hasta este punto se seguía pensando en ir eliminando números sin saber cómo usar los números claves. Luego, se dio el segundo descubrimiento: cómo utilizar los números claves. Si el número que el usuario piensa está en la lista, entonces se le suma a una variable global, n=0, el número clave de esa lista. Si no está en esa lista, entonces no se le suma nada. La suma de todos los números claves es el número que el usuario piensa. Se utiliza la fórmula: n = n + x, donde n es una variable global que se define al principio del programa como n = 0 y corresponde al valor que toma el número pensado por el usuario, y x es el número clave de la lista que se suma sólo si la respuesta del usuario es afirmativa. En esta fórmula no hay valores constantes ya que x depende del número clave. En cuanto a la n, esta va tomando un valor diferente en cada lista; el n del lado derecho de la fórmula va tomando el valor que había tomado la n del lado izquierdo en la lista anterior. Se utilizaron fórmulas para desplegar en forma de párrafo los números de las listas. Por ejemplo, en la primera lista desplegada se utilizó: Ejemplo 1: x=0 while x<63: if x!=60: print x+1,x+3,x+5,x+7,x+9,x+11 x=x+12 else : print 61,63 x=64 Los números son constantes y la x es una variable. <span style="mso-ansi-language: ES-GT; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; msoansilanguage: ES-GT; msofareastfontfamily: Calibri; msobidifontfamily: Calibri; msolist: Ignore;"> II. Diseño Para llegar a la solución que es determinar el número que el usuario pensó, se utilizan los números claves, descritos anteriormente. Se inicia definiendo una variable n al principio del programa, la cual empieza como n=0 y a lo largo del programa se le van sumando los números claves si las respuestas del usuario son afirmativas. Los números claves, x, dependen de la lista (x) que se esté desplegando; el número clave de la primer lista es 1, el de la segunda es 2, el de la tercera es 4, el de la cuarta es 8, el de la quinta es 16 y el de la 6 es 32. Se puede ver que cada vez que se va a la siguiente lista (x) se multiplica por 2; es decir lista(1) es la primera, lista(1*2=2) es la segunda, lista (2*2=4) es la tercera, lista (4*2=8) es la cuarta, etc. Si la respuesta es negativa, entonces no se suma nada a n, y en caso de que todas las respuestas del usuario sean negativas se despliega un mensaje de error ya que el número pensado por el usuario no estaría en ninguna de las listas. Ejemplo 2: <span style="font-size: 10pt; color: #e36c0a; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">if lista== 'sí' or lista== 'SI' : n=n+x Se debe notar, en el ejemplo 1, que si lista ≠ 'sí', entonces no suma el número clave. Además, se definieron tres funciones. La función denominada juego  es la que contiene todo el juego para que pueda ser invocada en un while para que el usuario pueda seguir jugando el juego sin tener que presionar F5 cada vez que termine de jugar. Ejemplo 3: while seguir == "si" or seguir== "sí" : x=0 #resetea el contador n=0 #resetea el contador juego #llama al juego para que empiece Otra de las funciones definidas fue lista (x) en la que x es el número clave para realizar la suma descrita al inicio, y la tercera función es llamada validar (l,x) en la que pide que la respuesta del usuario sea únicamente “sí” o “no” con sus variaciones para poder proceder. Se empieza definiendo la variable global, n=0, la cual tomará el valor del número pensado por el usuario. Luego, se desarrolla el juego, llamado por la función juego. En juego, se despliegan las listas en las que el usuario debe determinar si el número que pensó está o no. Para desplegar las listas en forma de párrafo, en lugar de enumerar los números para abajo, se utilizó un while (ver Ejemplo 1). Luego de desplegar la lista, se invoca a la función lista(x), en donde x corresponde al número clave. Después de la desplegar la primera lista, se llama a lista(1); luego de la segunda lista, lista(2); y así sucesivamente hasta llegar a desplegar la sexta lista y lista(32). La función lista(x) es definida al principio del programa, se usa para sumarle a n el número clave, x, si la respuesta del usuario es positivo, y además usa la función validar(l,x) para que si la respuesta del usuario no es “si” o “no” o alguna de sus variaciones, el programa siga preguntándole al usuario si su número está en esa lista. La función validar(l,x) también se define al principio del programa. Finalmente, luego de desplegar todas listas, utilizar todas las funciones y hacer las operaciones necesarias, se despliega el número, n, que el usuario pensó. No se utilizó ningún módulo predefinido por Python para la realización de este programa. Sin embargo, podría considerársele a juego un módulo creado para este proyecto. ** Funciones desarrolladas por el programador **. Para que se usan, parámetros esperados <span style="color: black; mso-ansi-language: ES-GT; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; msoansilanguage: ES-GT; msofareastfontfamily: Calibri; msobidifontfamily: Calibri; msolist: Ignore;"> 1. juego Esta función contiene todo el juego y a las demás funciones. En ella, se despliegan las listas con los números y las preguntas. Se definió una función para todo el juego para poder invocarla al final en un while y permitirle al usuario seguir jugando luego de haber terminado un juego. No utiliza ningún parámetro ya que esta función siempre es igual; el usuario no puede cambiarla y tampoco va tomando valores para regresar otros. <span style="color: black; mso-ansi-language: ES-GT; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; msoansilanguage: ES-GT; msofareastfontfamily: Calibri; msobidifontfamily: Calibri; msolist: Ignore;"> 2. lista(x) Esta función consta del parámetro x que puede recibir como argumentos los números claves: 1, 2, 4, 8, 16 ó 32. Sirve para sumarle a la variable global, n, el número clave; es decir, regresa un valor n “modificado” porque si la respuesta del usuario es afirmativa entonces le suma el número clave, x.  <span style="font-size: 10pt; color: #e36c0a; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">def <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> <span style="font-size: 10pt; color: #0070c0; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">lista <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">(x): <span style="font-size: 10pt; color: #e36c0a; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">global <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> n lista= <span style="font-size: 10pt; color: #7030a0; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">raw_input <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">("¿Su número está en esta lista? Conteste si o no. ") <span style="font-size: 10pt; color: #e36c0a; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">if <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> lista== <span style="font-size: 10pt; color: #00b050; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">'sí' <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> <span style="font-size: 10pt; color: #e36c0a; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">or <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> lista== <span style="font-size: 10pt; color: #00b050; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">'SI' <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> n=n+x validar (lista,x) Se debe notar que en esta función se utiliza la tercera función validar(l,x). <span style="color: black; mso-ansi-language: ES-GT; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; msoansilanguage: ES-GT; msofareastfontfamily: Calibri; msobidifontfamily: Calibri; msolist: Ignore;"> 3. validar(l,x) Esta función es utilizada dentro de la función lista(x) para que el programa siga preguntándole al usuario si su número está en la lista desplegada en caso de que el usuario no responda “si” o “no” o alguna de sus variaciones. Utiliza los parámetros l y x. Para el parámetro l, recibe el argumento “lista”, el cual toma la respuesta del usuario; es decir, el valor “si” o “no” (o variaciones) y si la respuesta es no es igual a “si” o a “no” (con variaciones) entonces despliega un mensaje de “Por favor ingresar sólo sí o no.” hasta que la respuesta sea “si” o “no” o variaciones. Luego, en el segundo parámetro recibe un valor x, que en la función lista(x) se le asigna el argumento x, el cual es igual al argumento que recibe lista(x) y corresponde al número clave. En caso de que la respuesta del usuario sea afirmativa, entonces procede a sumar el número clave, x, a n.  <span style="font-size: 10pt; color: #e36c0a; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">def <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> <span style="font-size: 10pt; color: #0070c0; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">validar <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">(l,x): <span style="font-size: 10pt; color: #e36c0a; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">global <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> n <span style="font-size: 10pt; color: red; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">#se debe llamar a la variable global n para poder usarla <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">lista = l     <span style="font-size: 10pt; color: #e36c0a; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">while <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> lista != <span style="font-size: 10pt; color: #00b050; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">"si" <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> <span style="font-size: 10pt; color: #e36c0a; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">and <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> lista!= <span style="font-size: 10pt; color: #00b050; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">'sí' <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> <span style="font-size: 10pt; color: #e36c0a; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">and <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> lista!= <span style="font-size: 10pt; color: #00b050; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">"no" <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> <span style="font-size: 10pt; color: #e36c0a; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">and <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> lista!= <span style="font-size: 10pt; color: #00b050; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">'nO' <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">: <span style="font-size: 10pt; color: #7030a0; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">print <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> "Por favor ingrese solo si o no." <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> lista = <span style="font-size: 10pt; color: #7030a0; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">raw_input <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">("¿Su número está en esta lista? Conteste si o   no. ") <span style="font-size: 10pt; color: #e36c0a; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">if <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> lista== <span style="font-size: 10pt; color: #00b050; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">'sí' <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> <span style="font-size: 10pt; color: #e36c0a; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">or <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;"> lista== <span style="font-size: 10pt; color: #00b050; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">'SI' <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">: <span style="font-size: 10pt; color: black; line-height: 115%; font-family: 'Courier New'; mso-ansi-language: ES-GT;">n=n+x <span style="mso-ansi-language: ES-GT; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; msoansilanguage: ES-GT; msofareastfontfamily: Calibri; msobidifontfamily: Calibri; msolist: Ignore;"> III. <span style="color: black; mso-ansi-language: ES-GT; mso-bidi-font-family: Arial; mso-bidi-font-weight: bold;">Conclusiones <span style="font-family: Symbol; mso-ansi-language: ES-GT; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; msoansilanguage: ES-GT; msofareastfontfamily: Symbol; msobidifontfamily: Symbol; msolist: Ignore;">·  Se definió una variable global, n, la cual toma el valor pensado por el usuario. <span style="font-family: Symbol; mso-ansi-language: ES-GT; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; msoansilanguage: ES-GT; msofareastfontfamily: Symbol; msobidifontfamily: Symbol; msolist: Ignore;">·  Se utilizaron tres funciones para realizar el programa, las cuales (1)contienen el juego, (2) hacen la suma para encontrar el número del usuario y (3) validan la respuesta del usuario cuando se obtiene un “sí” o “no” (con variaciones). <span style="font-family: Symbol; mso-ansi-language: ES-GT; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; msoansilanguage: ES-GT; msofareastfontfamily: Symbol; msobidifontfamily: Symbol; msolist: Ignore;">·  Se utilizó un while para desplegar las listas en forma de párrafo. <span style="font-family: Symbol; mso-ansi-language: ES-GT; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; msoansilanguage: ES-GT; msofareastfontfamily: Symbol; msobidifontfamily: Symbol; msolist: Ignore;">·  Se utilizó un while para seguir preguntándole al usuario si quiere seguir jugando el juego. <span style="font-family: Symbol; mso-ansi-language: ES-GT; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; msoansilanguage: ES-GT; msofareastfontfamily: Symbol; msobidifontfamily: Symbol; msolist: Ignore;">·  En la elaboración y ejecución del programa, se mejoró el conocimiento sobre definición de funciones al utilizar las tres funciones descritas. <span style="font-family: Symbol; mso-ansi-language: ES-GT; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; msoansilanguage: ES-GT; msofareastfontfamily: Symbol; msobidifontfamily: Symbol; msolist: Ignore;">·  Se aprendió sobre el uso de while al querer desplegar listas en forma de párrafos. <span style="font-family: Symbol; mso-ansi-language: ES-GT; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; msoansilanguage: ES-GT; msofareastfontfamily: Symbol; msobidifontfamily: Symbol; msolist: Ignore;">·  Se obtuvo más conocimiento de while al querer seguir preguntando al usuario si quería seguir jugando. <span style="font-family: Symbol; mso-ansi-language: ES-GT; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; msoansilanguage: ES-GT; msofareastfontfamily: Symbol; msobidifontfamily: Symbol; msolist: Ignore;">·  Se mejoró el conocimiento sobre el uso de contadores y definición de variables globales. <span style="font-family: Symbol; mso-ansi-language: ES-GT; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; msoansilanguage: ES-GT; msofareastfontfamily: Symbol; msobidifontfamily: Symbol; msolist: Ignore;">·  Se mejoró el conocimiento de condiciones al ser utilizadas en casi todo el programa. <span style="mso-ansi-language: ES-GT; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; msoansilanguage: ES-GT; msofareastfontfamily: Calibri; msobidifontfamily: Calibri; msolist: Ignore;"> IV. <span style="color: black; mso-ansi-language: ES-GT; mso-bidi-font-family: Arial; mso-bidi-font-weight: bold;">Bibliografía Downey, Allen. 2008. //Think Python. How to Think Like// //a Computer Scientist. Version 1.1.19// (versión electrónica). Green Tea Press: Massachusets, Estados Unidos.
 * __ Investigación corta  __**
 * Preguntas insustituibles **
 * Para llegar a la solución **
 * Fórmulas utilizadas, valores constantes de las fórmulas, funciones matemáticas **
 * ¿Cómo llevar a cabo la solución?  **
 * Descripción del curso lógico de la solución del problema (narrativa) **
 * Módulos de Python utilizados  **

[|[1]] El programa acepta variaciones para “sí”: sí, si, SI, SÍ, sÍ, sI, y para “no”: no, NO, nO


 * __PROGRAMA FUENTE:__**

n=0 print "Piense un número del 1 al 63 y el programa lo adivinará en seis pasos.\n" def validar(l,x): """ Esta funcion pide ingresar dos argumentos: En el primero se ingresa "lista", al cual ya se le habia asignado SI o NO. El segundo argumento corresponde al número clave para la lista (1,2,4,8,16 ó 32) Hasta que la respuesta no sea SI o NO, la función sigue corriendo. doctest: >>> validar(lista,1) Por favor ingrese solo si o no. ¿Su número está en esta lista? Conteste si o no. si  - hasta que la respuesta no es si o no, sigue corriendo esta función -
 * 1) llevará la cuenta del número por medio de una suma.
 * 2) si las respuestas son afirmativas, va sumando; de lo contrario, no hace nada.

""" global n #se debe llamar a la variable global n para poder usarla lista = l while lista != "si" and lista!= 'sí' and lista!='SI' and lista!='SÍ' and lista!='Si' and lista!='Sí'and lista!='sI' and lista!="sÍ"and lista!="no"and lista!='nO' and lista!='NO' and lista!="No": print "Por favor ingrese solo si o no." lista = raw_input("¿Su número está en esta lista? Conteste si o no. ") if lista== 'sí' or lista=='SI' or lista=='SÍ' or lista=='Si' or lista=='Sí' or lista=='si' or lista=='sI' or lista=="sÍ": n=n+x
 * 1) mientras la respuesta de lista, que corresponde al parámetro l,
 * 2) no sea igual a "sí" o "no", sigue pidiendo que ingrese "sí" o no"
 * 3) luego si la respusta es afirmativa, realiza n=n+x.

def lista(x): """ En esta función se ingresa el numero clave de la lista para que pregunte si el número pensado está en la lista y haga la suma para adivinar el número. doctest: >>> x=1 >>> lista(1) ¿Su número está en esta lista? Conteste si o no. si en caso de respuseta afirmativa, n=n+x, donde x=1

""" global n lista= raw_input("¿Su número está en esta lista? Conteste si o no. ") if lista== 'sí' or lista=='SI' or lista=='SÍ' or lista=='Si' or lista=='Sí' or lista=='si' or lista=='sI' or lista=="sÍ": n=n+x validar (lista,x)

def juego : """ Esta función llama al juego para adivinar un número del 1 al 63 en seis pasos. doctest: >>> juego 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 ¿Su número está en esta lista? Conteste si o no. -Luego de contestar la respuesta, sigue desplegando listas hasta obtener la respuesta final-

""" x=0 while x<63: if x!=60: print x+1,x+3,x+5,x+7,x+9,x+11 x=x+12 else: print 61,63 x=64
 * 1) con esto se despliega la primera lista de números

print

lista (1) #invoca para que haga la pregunta, y además valide la respuesta. print x=0 while x<63: if x!=60: print x+2,x+3,x+6,x+7,x+10,x+11 x=x+12 else: print 62,63 x=64
 * 1) se utiliza un while
 * 2) para que puedan desplegarse los números en forma de párrafo

print lista (2) print x=0 while x<63: if x!=56: print x+4,x+5,x+6,x+7 x=x+8 else: print 60,61,62,63 x=64 print lista (4) print x=0 while x<63: if x!=48: print x+8,x+9,x+10,x+11,x+12,x+13,x+14,x+15 x=x+16 else: print 56,57,58,59,60,61,62,63 x=64 print lista (8) print x=0 while x<63: if x!=64: print x+16,x+17,x+18,x+19,x+20,x+21,x+22,x+23 print x+24,x+25,x+26,x+27,x+28,x+29,x+30,x+31 x=x+32 else: print 56,57,58,59,60,61,62,63 x=64 print lista (16) print print x=31 while x<64: if x!=61: print x+1,x+2,x+3,x+4,x+5,x+6 x=x+6 else: print 62,63 x=64 print lista (32) print if n!=0: print "El número que usted pensó es", n, "." else: print "Error: el usuario contestó mal alguna de las preguntas." juego seguir = raw_input ("¿Desea volver a jugar? ") while seguir == "si" or seguir== 'sí' or seguir=='SI' or seguir=='SÍ' or seguir=='Si' or seguir=='Sí'or seguir=='sI' or seguir=="sÍ": x=0 #resetea el contador n=0 #resetea el contador juego #llama al juego para que empiece seguir = raw_input ("¿Desesa volver a jugar? ")

__**MUESTRA DE RESULTADOS DE LAS PRUEBAS UNITARIAS:**__ []