Proy10Sec10+Grupo+No.+10

Universidad del Valle de Guatemala Programación en Python Proyecto 1 Juan José Brolo 09109 Jose Javier Morán 08907 Preguntas Insustituibles ¿Cuál es la meta? Crear un programa que sea un juego para que la computadora adivine un número pensado por el usuario entre un rango que también es puesto por el usuario.

¿Cuáles son los datos? Números, algunas condiciones e instrucciones

¿Cuáles son las condiciones? El programa debe: - Seguir buenas prácticas de documentación y programación. - Incluir el docstring. - Existir un doctest. - Probar el programa con todas las opciones de ingreso. - Tener estructuras condicionales. - Estar estructurado con funciones. - Ser amigable con el usuario.

¿Qué procesos necesito? - Procesos matemáticos. - Programación en el lenguaje Python.

Diseño de la Investigación Para llegar a la solución, se va a partir de las diferentes condiciones que el programa debe tener. El usuario propone al programa un rango y el usuario piensa en un número y el programa deberá adivinar cuál es ese número, la computadora no tiene límite de intentos para adivinar. Para lograr esto, el usuario propone un rango, entonces la computadora adivinará un número y el usuario le dirá si el número adivinado es más grande o más pequeño y de esta forma se irán haciendo cada vez más pequeños los rangos hasta llegar al número que el usuario piensa. Las variables para este programa serán el rango que el usuario ingrese, este rango tiene la única condición que debe ser mayor a uno y menor a diez mil.

El curso para la solución de este problema se iniciará pidiéndole al usuario que ingrese el rango entre el cuál desea que el programa le adivine el número que debe ser un entero. Después de eso, la computadora adivinará un número y el usuario le dirá si el número está en el rango mayor o menor a ese número. Por medio de hacer los rangos cada vez más pequeños a partir de condiciones en el programa, se llegara finalmente a un rango muy pequeño y después al número que el usuario está pensando.

Los módulos a utilizar serán varios. Se utilizará “if”, “or”, “and”, “elif”, “else” como condicionales para hacer cada vez más pequeños los rangos. Se utilizará “raw_input” e “int” a la hora que el usuario ingrese el rango. Se utilizará asignación de variables para asignar un número a las variables y se utilizará el módulo “bool” para determinar si los valores son falsos o verdaderos. Se podría utilizar “isinstance” para tener más seguridad en el programa y hacerlo más sólido. Se utilizará las funciones “max” y “min” para determinar los valores máximos y mínimos a los que se puede llegar y esto va a ser dictado por el rango. Finalmente se utilizaran las funciones “print” y “return” para retornar y mostrar los valores que el programa adivina por medio del módulo “random”. Básicamente estas funciones y módulos se utilizarán para que, por medio de procesos matemáticos, se adivine el número que el usuario está pensando en un rango determinado.

Fórmulas

cont2=cont2+1 x= (min1+max1)/2

Manual del usuario Instrucciones de instalación:

Para poder utilizar este programa, debe bajar el programa “Python”. Este es un programa gratuito y se encuentra en [|www.python.com]. Al bajar este programa lo debe instalar y al ya tenerlo instalado abrir Python IDLE y seleccionar “file” y entre esa opción buscar “open” y buscar el programa llamado “Juego”.

Manual del juego:

Este es un juego en el cuál se le inserta un intervalo a la computadora y después de eso se piensa en un número. El programa nos dirá en cuantos intentos adivinará el número en que se está pensando por medio de decirle a la computadora si el número propuesto es menor o es mayor al que se piensa. La segunda parte del juego será que el programa pensará en un número en el rango que el usuario le diga. Usted debe adivinar este número por medio de que la computadora le dirá si el número que usted propuso es mayor o es menor al número por adivinar. Al ganar el programa mostrará un mensaje que el usuario adivinó y le dirá el número de intentos que fueron necesarios para llegar a la solución. El programa tendrá error si usted propone un número que está fuera del rango o si el número que usted piensa para que la computadora adivine está fuera del rango propuesto. Debe cuidar de permanecer siempre entre los rangos dados.

Se puede encontrar un video del funcionamiento del juego en el área para subir archivos en esta misma página. El video se llama "funcionamiento de proyecto 1 en Python por Juan José Brolo y Jose Javier Morán"

Programa fuente:


 * 1) -*- coding: cp1252 -*-
 * 2) Proyecto1.py
 * 3) Juan José Brolo 09109
 * 4) Jose Javier Moran 08907
 * 5) Este es un programa en que el usuario le ingresa un rango y este mismo piensa en un número y el programa debe adivinar ese número.
 * 6) 21 de agosto de 2009
 * 1) 21 de agosto de 2009

print ' JUEGO: Adivina un número '
 * 1) Este primer juego no está hecho por definición de funciones pues nos pareció más sencillo y seguro hacerlo cíclico.

print '1ro) Piensa un número y escribe un intevalo en el que esté incluido.' min1 = int(raw_input('Mín: ')) max1=int(raw_input('Máx: ' ))

print '_'

""" Este parte del programa lo que hace es calcular la cantidad de posibilidades que tiene para adivinar el numero """

print '2do) Pulse enter para comenzar:'

rango= max1-min1

cont=1

while 2**cont<rango: cont=cont+1
 * 1) Arriba se muestran las fórmulas que indican el número de intentos que va a tener el ordenador para adivinar el número.

print 'Este es el número máximo de intentos que tiene el ordenador para adivinarlo: ', cont

print '_'

cont2=0 op='' """ Con este ciclo lo que realizamos es que el ordenador calcule el numero que uno penso, y con ello utilizamos tambien condiciones como if que lo que hace es ingresar si es mayor, menor o igual al numero que el usuario estaba pensando. """
 * 1) Se definen dos variables que son para que el juego adivine el número, estas son útiles en las condicionales.

while (cont2, si el numero es igual ingrese =' op=str(raw_input('')) if op=='>': min1=x if op=='<': max1=x elif op!='<' or op!='>': print 'Esta ingresando simbolos que no son correctos\n'
 * 1) Arriba están las condicionales para que el juego progpona números que salen de la fórmula explicada arriba para hasta adivinarlo.

print 'El numero que penso es: ', x print 'Acerto en: ',cont2, ' intentos'


 * 1) Con los print de arriba se muestra un mensaje y el número de intentos y el número pensado por la persona.

def _test : import doctest doctest.testmod if _name_ == "_main_": _test

print '_'

print "Ahora si ya tiene el truco, pruebe adivinar usted" print "Debe indicar un rango de números y adivinar el número que el ordenador piensa entre el rango propuesto." print "Cuando vaya adivinando, el ordenador le dirá si el número que piensa es mayor o menor o si adivinó el número."
 * 1) El siguiente es el programa en el que el usuario le adivina al ordenador.

pro = 0 def juego2 : global pro import random print "___" rang1 = int(raw_input("Ingrese el rango mínimo deseado:")) rang2 = int(raw_input("Ingrese el rango máximo deseado:")) x = random.randint (rang1, rang2) print "Puede ingresar números desde", rang1, "hasta", rang2 print "___" res = int(raw_input("ingrese su respuesta:")) if res rang2: print "Su número no está dentro del rango, ingrese uno que si este" if res == x: print "¡Usted gana! Juego terminado" if res < x: print "El número es más grande" if res > x: print "El número es más pequeño" while (res != x): res = int(raw_input("ingrese su respuesta:")) if res rang2: print "Su número no está dentro del rango, ingrese uno que si este" if res == x: print "¡Usted gana! Juego terminado" if res < x: print "El número es más grande" if res > x: print "El número es más pequeño"
 * 1) Esta es la definición principal del segundo juego y funciona para que la persona adivine el número que la computadora está pensando.
 * 1) La serie de condiciones que comienza abajo es para que el programa imprima diferentes respuestas a partir de si el número propuesto es más grande, pequeño o igual al pensado.

def iniciar: no = "no" si = "si" print "¿Desea jugar de nuevo?" respuesta = raw_input("Si o no") if respuesta == no: print "Termino el juego" if respuesta == si: print "Juguemos de nuevo" return juego2
 * 1) Esta función es para que si el usuario quiere jugar otra vez, se le iserte otra vez si o no a la función y el juego dos corra nuevamente.

print juego2 print iniciar print doctest
 * 1) Abajo se llama a dos funciones, la primera es el juego y la que está puesta después es la función de repetición de juego.
 * 2) Están en ese orden a propósito pues al tierminar se llama a la otra función que reinicia el juego.

print "Este juego fue hecho por Juan José Brolo y Jose Javier Morán" print " Programación en Python"