Proy1Sec10+Grupo+No.+12

Camilo Galindo, carné no. 09144 Andrés Castañeda, carné no. 09155

** Preguntas Insustituibles: Proyecto 1: Adivinar un número (rango) **  · ¿Cuál es la meta del proyecto? -  Que el programa sea capaz de adivinar un número en un rango determinado por el usuario en cierta cantidad de intentos determinadas por el programa en función del tamaño del rango estipulado por el usuario en un principio.

· ¿Con que datos se cuenta? -  El valor máximo y mínimo del rango. -  La cantidad de intentos.

· ¿Qué restricciones hay? -  El tamaño del rango. -  Que tiene que ser un número entero. -  Que no puede ser mayor a 10,000. -  Que no pueden ser valores flotantes.

· ¿Qué procesos se usarán? -  El usuario pensará un número y un intervalo, dentro del cual se encuentra el número. -  Este intervalo no puede ser mayor a 10,000. -  El ordenador determinara el número de intentos en la cual podrá adivinar el número pensado por el usuario. -  El ordenador despliega un primer intento con un número y el usuario debe responder si el número pensado es mayor, menor o igual al número desplegado por el ordenador, y así sucesivamente hasta que despliegue el número pensado por el usuario antes o en la cantidad de intentos desplegados por el ordenador.

Camilo Galindo Andrés Castañeda

** Diseño preliminar de trabajo para el proyecto uno ** - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Valores máximos (máx.) - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Valores mínimos (min.) - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> If, elif, else, or, and, not. - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Igualdad ==. - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Diferencia !=. - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Mayor que X (X<) - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Mayor o igual que x (X<=) - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Menor que X (X>) - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Menor o igual que X (X>=) - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Pass. - While - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> random - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Mostrar - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Print - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> ** “def” ** para la creación de funciones - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Intervalos ingresados por el usuario - Return - Global para funciones globales - Doctest
 * Posibles funciones a utilizar: **
 * Condiciones, módulos a utilizar. **
 * Parámetros y argumentos a usar: **

- <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> División, suma y resta. (def suma, resta o división) (return suma, resta o división) - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Datos (poner una variable datos para cada dato ingresado por el usuario según el rango).
 * Variables a usar: **

Para obtener una solución en el programa, debemos tomar en cuenta las condiciones que debe tener el programa. El programa consiste en proponer números dependiendo del intervalo ingresado por el usuario. Las variables serán los números de valor máximo y valor mínimo que el usuario ingresara, siendo este el rango. El rango tiene la limitación de que debe ser mayor o igual que uno y menor o igual que diez mil. El programa propone un número de intentos dependiendo del intervalo ingresado por el usuario. El programa principalmente trata acerca de adivinar el numero del usuario en cierta cantidad de intentos, por lo que se entiende que debe programarse en base a rangos y si el usuario determina un rango con cierta cantidad de números enteros entonces se determinara cuántos intentos debe realizar, es decir, el programa, en base a la cantidad de números enteros que el usuario debe determinar cómo su rango, realizara los intentos pertinentes, a mayor rango, mas intentos.

También se debe considerar que va hacer el programa cuando el usuario le diga si el numero que eligió es mayor, menor o igual, tentativamente podemos decir que el programa una vez el usuario haya ingresado el rango lo dividirá a la mitad y si el mismo usuario indica que su número es menor lo volverá a dividir a la mitad, dando siempre como resultado un numero entero claro está, hasta que dé en el número adecuado o el usuario indique que el numero pensado es mayor, si se le dice eso se le suma siempre la mitad del numero estipulado en entero. Resumiendo, el programa cada vez que el usuario pulsa el botón de mayor o menos, suma o resta dependiendo el caso la mitad del último número que fue añadido o sustraído es decir, si se dice que el usuario es menor que 50 va restarle 25, y si se dice que es mayor que 25 va sumarle 12, que es el entero más cercano, si se dice que es mayor que 37 le va sumar 6, y así en cadena siempre en números enteros.

Por último, cuando el usuario determine que el número es igual al pensado el programa deberá desplegar un mensaje de éxito que indique que lo ha logrado y en la cantidad de intentos.

El juego que hemos creado para ti se divide en dos partes, igual de interesantes y con un resultado que te asombrara… ¡GARANTIZADO! En esta primera parte, usted deberá pensar en un numero cualquiera dentro de un rango a estipular por nadie más y nadie menos que … ¡USTED! … el rango debe de estar entre los números de 1 a 10000 y ud determinara los valores, recordando que LOS NUMEROS DEBEN ESTAR DENTRO DEL INTERVALO [1,10000]. El primer número a ingresar será tomado por el programa como el valor MINIMO del rango, es decir, el primer número que lo compone. El segundo número a ingresar será tomado por el programa como el valor MAXIMO del rango, es decir, el último numero que puede componer y que usted podría pensar. La metodología del juego es la siguiente, al usted ingresar el rango, el programa tomara el valor máximo del mismo y lo dividirá por dos, dándole como resultado exactamente el numero a la mitad de su rango, recordando que si es un número impar el programa no determinara un resultado decimal, sino mas bien su entero más cercano. Al haber determinado la mitad de su intervalo el programa desplegara el mismo como su primer intento de adivinar, si el numero no es el que usted tenía en mente, usted debe indicarle a la computadora si el numero que usted tiene en mente es mayor o menor, al hacer esto, usted estará indicándole a la computadora si debe restar o sumar en su siguiente calculo, que será la mitad del resultado de la primera división, es decir, si al principio se dividió el ultimo numero del rango para obtener como resultado la mitad del rango, ahora se dividirá la mitad del rango para determinar como resultado parcial, el resultado final dependerá de la suma o resta de ese resultado a la primera división. El programa continuara realizando el mismo procedimiento hasta encontrar su número. Al final del programa el mismo indicara cuantos intentos se tomo para adivinar su numero y en base a la cantidad de intentos esta la nota que debería obtener el programa por su desempeño. ** RECUERDE: ** ES SU RESPONSABILIDAD QUE EL PROGRAMA OBTENGA DATOS CERTEROS ACERCA DEL NUMERO QUE USTED ES PENSANDO, ES TRAMPA SI USTED INDICA QUE SU NUMERO ES MENOR CUANDO EL MISMO ES MAYOR O VICEVERSA. En la segunda parte del programa es un juego donde el usuario o sea, USTED, debe adivinarle a la computadora el numero pensado en una cierta cantidad de intentos en base a lo aprendido del primer juego, como queremos que usted tenga un desarrollo intelectual no le vamos a dar más pistas que las dadas en el juego anterior pero lo que si podemos contarle a usted es que en este caso usted cuenta con la ventaja, como en el juego anterior, de determinar el valor del rango donde la computadora puede pensar sus números, por lo que recomendamos para nuevos usuario que vayan de poco a poco, para determinar la manera más efectiva de encontrar el numero sin depender tanto de la suerte, el único consejo que le podemos dar es: divida dentro de dos y sume o reste ;) con eso debería ser suficiente para que una persona tan inteligente como usted pueda determinar el número sin mayores complicaciones. Al final, el programa le indicara a usted la cantidad de intentos que le tomo resolver el problema y la puntuación que ha obtenido, dándole como siempre la posibilidad que repita el juego si gusta mejorar su resultado. ¡!!ESPERAMOS QUE ESTOS DOS PROGRAMAS SEAN DE SU AGRADO Y QUE LE HAYAN AYUDADO A DESARROLLAR DESTREZAS!!!
 * MANUAL DE USUARIO **
 * Primera parte del juego **
 * SEGUNDA PARTE DEL PROGRAMA **

** Conclusiones ** - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> El proyecto permitió que conociéramos de mejor manera funciones y modos de programación de python como doctest, funciones globales, if y while. - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> While sirve para que el programa haga dos instrucciones o más al mismo tiempo. - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Para determinar el numero el programa iba dividiendo dentro de dos cada nuevo intervalo de números determinado. - <span style="font-family: 'Times New Roman'; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> Cuando el usuario indicaba que el numero era mayor, el resultado de la división se le sumaba a lo llevado y cuando indicaba que era menor se le restab

[] []
 * LINK DE PÁGINA DE INTERNET DONDE SE ENCUENTRAN LOS VIDEOS DEL GRUPO: **
 * Programa escrito:**

chances = 0 chancesusuario = 0 def AdivinarOrdenador : global chances print "Empecemos!" minr= int (raw_input("Ingresa el valor minimo de tu rango: ")) if minr 10000: print "Recuerda que el rango no puede ser menor que 1 ni mayor que 10000" return AdivinarOrdenador maxr= int (raw_input ("Ingresa el valor maximo de tu rango: ")) if maxr>10000 or maxr < 1: print "Recuerda que el rango no puede ser menor que 1 ni mayor que 10000" return AdivinarOrdenador if minr>maxr: print "Recuerda que el rango debe ser de menor a mayor!" return AdivinarOrdenador r= (minr+maxr)/2 chances = chances + 1 afirmativo = "si" negativo = "no" may= "mayor" men= "menor" print "El rango que escogiste es de: ",minr, " a: ", maxr, "\n" print "El numero que estas pensando es: ",r,"?" resp= (raw_input("si o no?")) if resp == afirmativo: print "Adivine a la primera!" return intentosOrdenador
 * 1) Proyecto1.py
 * 2) Camilo Galindo y Andres Castaneda
 * 3) Seccion 10 Grupo #12
 * 4) El siguiente programa emulara dos juegos, uno donde el usuario adivinara el numero de la maquina y otro donde la maquina adivinara el numero del usuario
 * 1) utilizamos la variable def para definir la funcion adivinar ordenador,
 * 2) que sera practicamente todo el juego donde python adivina su numero
 * 1) Conforme se vaya llevando a cabo el programa se ira determinando condiciones como if, else y while

if resp == negativo: deduccion = (raw_input("es mayor o menor?")) chances = chances +1 if deduccion== may: minr=r r=(minr+maxr)/2 print "El numero que estas pensando es:",r,"?" resp= (raw_input("si o no?")) if deduccion == men: maxr=r r=(minr+maxr)/2 print "El numero que estas pensando es:",r,"?" resp= (raw_input("si o no?")) while resp == negativo: if resp == negativo: deduccion= (raw_input("es mayor o menor?")) chances = chances +1 if deduccion== may: minr=r r=(minr+maxr)/2 print "El numero que estas pensando es:",r,"?" resp= (raw_input("si o no?")) if deduccion == men: chances maxr=r r=(minr+maxr)/2 print "El numero que estas pensando es:",r,"?" resp= (raw_input("si o no?")) if resp == afirmativo: chances = chances + 1 print "Adivine tu numero en ", chances, " intentos!" def AdivinarUsuario : global chancesusuario import random print "Empecemos!" minr= int (raw_input("Ingresa el valor minimo de tu rango: ")) if minr 10000: print "Recuerda que el rango no puede ser menor que 1 ni mayor que 10000" return AdivinarUsuario maxr= int (raw_input ("Ingresa el valor maximo de tu rango: ")) if maxr>10000 or maxr < 1: print "Recuerda que el rango no puede ser menor que 1 ni mayor que 10000" return AdivinarUsuario if minr>maxr: print "Recuerda que el rango debe ser de menor a mayor!" return AdivinarUsuario r = random.randint(minr,maxr) print "El rango que escogiste es de: ",minr, ", a: ", maxr, "\n" print "Listo, ya pense en un numero, trata de adivinar cual es!" adivinaUsuario = int(raw_input("Ingresa el numero que crees que estoy pensando, yo te indicare si es mayor o menor al que yo pienso: ")) if adivinaUsuario < minr and adivinaUsuario > maxr: print "Recuerda que debes adivinar un numero dentro del rango que escogiste" chancesusuario = chancesusuario + 1 if adivinaUsuario == r: print "Adivinaste a la primera!" chancesusuario = chancesusuario + 1 return jugarOtroJuego
 * 1) Aqui comienza el programa donde el usuario le adivina el numero a la computadora
 * 1) Aqui una fuente de error con el rango

if adivinaUsuario > r: print "Sigue adivinando, mi numero es menor!" chancesusuario = chancesusuario + 1 if adivinaUsuario < r: print "Sigue adivinando, mi numero es mayor!" while (adivinaUsuario != r): adivinaUsuario = int(raw_input("Ingresa el nuevo valor que piensas que estoy pensando: ")) if adivinaUsuario == r: print "Adivinaste!" chancesusuario = chancesusuario + 1 if adivinaUsuario > r: print "Sigue adivinando, mi numero es menor!" chancesusuario = chancesusuario + 1 if adivinaUsuario < r: print "Sigue adivinando, mi numero es mayor!" chancesusuario = chancesusuario + 1
 * 1) Aqui esta la funcion que determinara los intentos del ordenador y su puntuacion

def intentosOrdenador : global chances chances = chances print "Recuerda que tenia 6 intentos para poder sacar 100 puntos" print "Cada intento que me pasara de 6, me costaria 6 putnos por intento extra" if chances == 1: print "saque 100, merezco algunos puntos extra"

if chances > 6: puntuacion = 100-(chances-6)*6 print "Utilce: ", chances," intentos, por lo que mi calificacion debe de ser: ", puntuacion if chances <= 6: print "Adivine en: ", chances," intentos. Gane 100 puntos " def intentosUsuario : global chancesusuario chancesusuario = chancesusuario print "Recuerda que tenias 6 intentos para poder sacar 100 puntos" print "Cada intento que te pasaras de 6, te costaria 6 putnos por intento extra" if chancesusuario == 1: print "Felicidades, sacaste 100, con algunos puntos extra" if chancesusuario > 6: puntuacion = 100-(chances-6)*6 print "Utilizaste: ", chancesusuario," intentos, por lo que tu calificacion debe de ser: ", puntuacion if chancesusuario <= 6: print "Adivinaste en: ", chancesusuario," intentos. Ganaste 100 puntos " def jugarDeNuevo : yes = "si" no = "no" r= raw_input("Deseas jugar de nuevo?") if r == yes: print "De acuerdo, juguemos de nuevo!" return AdivinarOrdenador else: print "Gracias por jugar!, espero juguemos de nuevo ;)" while r == yes: print "De acuerdo, juguemos de nuevo!" return AdivinarOrdenador def jugarOtroJuego : yes = "si" no= "no" r= raw_input("Deseas jugar de nuevo?") if r == yes: print "De acuerdo, juguemos de nuevo XD" return AdivinarUsuario  else: print "Espero jugar de nuevo pronto. Suerte!" while r == yes: print "De acuerdo, juguemos de nuevo XD" return AdivinarUsuario  def integrantesDelGrupo : """ esta definicion (funcion) posee las variables: C = "Camilo Galindo" A = "Andres Castaneda" Programa creado por Camilo Galindo y Andres Castaneda """ C = "Camilo Galindo" A = "Andres Castaneda" print "Programa desarrollado por: ",C, " y ",A, "\n"
 * 1) y aqui la que determinara los intentos del usuario y su puntuacion
 * 1) la funcion para poder volver a jugar el primer juego
 * 1) la funcion para poder jugar el segundo juego de nuevo

def _test : import doctest doctest.testmod if __name__=="__main__": _test

print "Bienvenido!!" nombre = raw_input("Porfavor ingresa tu nombre o nick: ") print nombre, " espero que disfrites mucho estos dos juegos" print " " print "En este juego adivino el numero que estas pensando dentro de un rango que tu, ", nombre, ", escoges" print "El rango que puedes escoger debe ser de 1 a 10000" print "Tengo 6 intentos para poder sacar 100, por cada intento que me pase de los 6, se me restan 6 puntos" AdivinarOrdenador intentosOrdenador jugarDeNuevo print " " print "Ahora intenta este otro Juego!!" print " " print "En este otro juego, yo pienso el numero y tu adivinas!!!" print "El rango que puedes escoger debe ser de 1 a 10000" print nombre, " tienes 6 intentos para poder sacar 100, por cada intento que te pases de los 6, se te restan 6 puntos" AdivinarUsuario intentosUsuario jugarOtroJuego print " " print "Suerte ", nombre, ", te espero pronto!" integrantesDelGrupo