Investigacipon+Seccion+20+Grupo+C

= = =Regresar=

**Análisis: **

 * Meta: **


 * Comparar el orden de los números generados con el de los números ingresados
 * Corroborar la unicidad de los números ingresados
 * Corroborar la cantidad de números ingresados.
 * Corroborar la autenticidad de los caracteres (que sean números)
 * Mostrar mensajes de error cuando alguna de las anteriores no se cumpla.
 * Mostrar resultado en pantalla sobre las comparaciones.


 * Datos: **
 *  Números
 * Números generados por computadora


 * Condiciones: **
 * Deben ser sólo 5 números.
 * Deben ser números y no letras o algún otro carácter.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Son únicamente 5 intentos.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Cuando un número esté entre los 5 generados por el computador pero no en la posición exacta, marcar T
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Cuando un número esté entre los 5 generados y está en la posición exacta marcar F
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Cuando un número no esté entre los 5 generados marcar X.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">No puede haber un número igual a otro entre los ingresados.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Los números deben ir separados por espacios.


 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Deben ser sólo 5 números.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Deben ser números y no letras o algún otro carácter.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Son únicamente 5 intentos.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Cuando un número esté entre los 5 generados por el computador pero no en la posición exacta, marcar T
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Cuando un número esté entre los 5 generados y está en la posición exacta marcar F
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Cuando un número no esté entre los 5 generados marcar X.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">No puede haber un número igual a otro entre los ingresados.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Los números deben ir separados por espacios.

<span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;"> <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Se le indica al ordenador la creación de números aleatorios por medio de un módulo. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Se solicita al usuario ingresar 5 dígitos sin repetirse. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Se examinan los datos para saber si se han ingresado menos datos de lo que se está pidiendo <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Luego se verifica si están todos separados por espacios <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Luego se examinan para ver si no hay letras o algún otro carácter en la serie de números. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">En caso de que hubiera algún error en los incisos anteriores, entonces se pide otra vez el ingreso de los números. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Cuando los números estén bien, entonces se pasará a comparar si el número 1 ingresado es igual al primer número de la cadena. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Si los dos números son iguales, entonces se marca una F <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">·  <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Si no está en el primer lugar, entonces se compara con el resto de los números generados por la computadora. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Si es número está entre los otros cuatro números, entonces se maraca una T. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">·  <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Si el número no coincide con ninguno de los números generados por la computadora, entonces se maraca una X. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">·  <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Se sigue el mismo procedimiento para cada uno de los números ingresados por el usuario. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Si los cinco números coinciden exactamente, entonces el juego ha terminado. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Si no, entonces se da la oportunidad de intentar otra vez. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">El usuario tienen un total de 5 oportunidades. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Si las 5 oportunidades se terminan, entonces el juego ha terminado. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Cuando el juego termina se hace la pregunta si se quiere jugar otra vez.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Procedimiento: **

<span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Variables a utilizar: <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Variables globales: <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">cadena = random.sample(xrange(0,9),5) <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">cadena = str(cadena) <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">termino = "El juego ha terminado." <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">otraoportunidad = "Inténtelo de nuevo." <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">oportunidades = 5 <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">abecedario = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ°!#$%&/=?¡*¨[]_:;>¬\~^`<" <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">variables locales para funnumer(x,y) <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">verdadero = "F " <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">falso = "X " <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">talves = "T " <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">res = res1 + res2 + res3 + res4 + res5 <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Variables locales para IDrespuesta <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Resp = otraoportunidad <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Resp = termino <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Oportunidad = oportunidad + 1 <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Variables locales para ingreso <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">numero = raw_input("\nIngrese 5 números con un espacio entre cada número: ") <span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%; mso-fareast-font-family: 'Courier New'; msofareastfontfamily: 'Courier New'; msolist: Ignore;">o <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">respuesta = funnumer(numero,cadena)
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Diseño: **

<span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;"> Este problema se relaciona principalmente por medio de la comparación de números. Se genera un número por computador que queda guardado en una variable. Luego se pide el ingreso de los datos por parte del usuario. Sin embargo estos datos son de tipo string, por lo que era necesario convertir la serie de números generados por computador a string también. La razón por la cual se usaron strings era porque una condición de las instrucciones era que los números ingresados debían estar separados por un espacio, así que el utilizar string slices y comprarlas resultó más sencillo. Sabido cómo se iban a utilizar los datos ingresados y generados para comprar, ya se pudo hacer funciones al respecto. Se definieron variables globales, y algunas locales. Para la comparación de los string slices, se definió una función que tomaba las series de números y se dividían en pedazos. Aquí observamos que al convertir la serie de números generados por la computadora a strings, a estos se le agregaron corchetes y comas los cuales eran indispensables tomar en cuenta para obtener el número correcto que se iba a comparar. Para determinar si un número era T, F o X, se definieron variables locales a las cuales la respuesta de la comparación de cada número se le iba a asignar el valor de estas para después sumarse y obtener un resultado sobre los 5 números ingresados. Ya se describieron dos funciones: ingreso que es la que pide al usuario ingresar los números, y también revisa que no sean letras, espacios y repetidas; y la variable funnumer(x,Y) la cual toma como X a los números ingresados por el usuario a Y como el número generado por la computadora convertido a string. La tercera y última función creada fue la de IDrespuesta(z). Esta función toma el resultado de la función funnumer(x.y) y calcula el número de veces que ha intentado adivinar el número. También identifica si el usuario ha ganado o perdido el juego. Después de haber terminado las funciones, se crearon los ciclos para verificar si el usuario había perdido o si había ganado el juego y saber si deseaba jugar de nuevo. Cuando se escoge jugar de nuevo, se necesita ir a otro ciclo diferente al usado de primero debido a que se necesita generar otra cadena, sino todos los resultados hubieran sido relativos a la primera serie de números generados por el computador.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Curso lógico de la solución del problema: **

<span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Se utilizó el módulo random para generar los números aleatorios que se utilizaron bajo la variable cadena en nuestro programa.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Módulos de Phyton utilizados: **

<span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;"> Ingreso: no usa parámetros porque obtiene los primeros datos durante su ejecución. En esta función se obtienen los números del usuario, y se revisan para ser enviados a la siguiente variable.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Funciones definidas: **

Funnumer(x,y): esta función toma como X a los números generados por ingreso y a Y a la cadena generada por random.sample. Aquí se descomponen ambas variables en string slices y se compararan. Se obtiene como resultado a la a el resultado de Toque o Fama.

IDrespuesta(z): esta función toma a z como la respuesta de funnumer(x,y) y determina si el juego termina ahí o si empieza de nuevo.

<span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Con este proyecto aprendimos a usar ciclos para lograr que se obtenga el dato que esperamos y así ahorrarnos mucho trabajo en comparación y composición de funciones. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Aprendimos también que los ciclos son muy importantes para la programación defensiva y el uso adecuado del usuario hacia el programa. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Todos los procesos son ordenados, y así como en este proyecto, no podemos hacer uno sin antes hacer el que está previo. <span style="font-family: Symbol; font-size: 10pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Se puede utilizar este tipo de ejercicios para darse cuenta que tantos detalles se puede imponer en nuestro camino cuando estamos haciendo un programa que dependa del ingreso de datos por parte de personas que no necesariamente sean programadores.
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Conclusiones: **

<span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;"> Centro de estudiantes de ingeniería en sistemas. Noviembre, 4, 2008. Consultado el 1 de septiembre de 2009. http://images.google.com.gt/imgres?imgurl=http://ceisuss.files.wordpress.com/2008/11/pytthon.png%3Fw%3D499%26h%3D235&imgrefurl=http://ceisuss.wordpress.com/2008/11/04/algo-sobre-python/&usg=iM7DrQN9ZeYIUSLD1YnlQ3PDysM=&h=235&w=499&sz=137&hl=es&start=6&um=1&tbnid=YiEEFNeqotcSSM:&tbnh=61&tb
 * <span style="font-family: 'Trebuchet MS','sans-serif'; font-size: 10pt; line-height: 115%;">Bibliografía: **

__Sintes Marco.” Condiciones if, lif, else”. Octubre, 7, 2002. Consultado el 31 de agosto del 2009.__ http://www.mclibre.org/consultar/python/lecciones/le03_if_else.html __