La idea de este juego es que el programa nos de números aleatorios con un operador matemático aleatorio y nos pregunte el resultado de esa operación, si la respuesta esta bien, entonces, el programa nuevamente nos da números y operador aleatorio con nuestra racha aumentando de 1 en 1 cada vez que respondamos bien las preguntas, si respondemos mal, entonces el juego habrá acabado y habremos perdido.
Vamos a comenzar con un sólo caso, una pregunta, y un print() que nos diga si respondimos bien o mal.
Primero importamos la libreria random para obtener números aleatorios
import random
luego agregamos un contador que lo llamaremos ‘racha’
import random
racha=0
Creamos dos variables donde se van a almacenar los numeros aleatorios, y con el método .randint() de random vamos a obtener números aleatorios entre 1 y 10
import random
racha=0num1=random.randint(1,10)num2=random.randint(1,10)
Ya tenemos nuestros números, ahora nos falta nuestros operadores, para eso, vamos a crear una lista con los operadores que vamos a usar
import random
racha=0
num1=random.randint(1,10)
num2=random.randint(1,10)
operadores=['+','-','*']#lista de operadores
Se pueden dar cuenta que los operadores los ingresé como strings, esto es porque si sólo lo ingreso como si fuera un operador, python no lo reconocería y me daría error, más adelante vamos a arreglar eso, pero por lo mientras vamos a escoger uno de esos operadores aleatoriamente nuevamente con el método .randint() de random y la propiedad de las listas que nos permite escoger un elemento indicandole su posición dentro de corchetes, asi: lista[posición].
import random
racha=0
num1=random.randint(1,10)
num2=random.randint(1,10)
operadores=['+','-','*']
op=operadores[random.randint(0,2)]#escogiendo operador
Recordar que las listas comienzan desde la posición 0, como tenemos 3 elementos,entonces estarían en las posiciones 0,1,2. Es por eso que en el método randint() puse un rango de 0 a 2.
Ya tenemos nuestros números y operador elegido, ahora falta que la computadora se ponga a hacer la operación correspondiente, para luego compararla con nuestra respuesta y verificar si respondimos bien. pero recordemos que nuestros operadores estan en formato de string, y es imposible sumar dos números mediante un string.
2 '+' 4
El código de arriba nos daría error al intentar sumarlos, es por eso que primero debemos convertir a operadores reales, mi idea fue mediante condicionales comparar posibles resultados de la varible op, si me da True el condicional, entonces hacer la operación con los números y guardarlo en la variable answer, en el siguiente código lo van a ver más claramente.
import random
racha=0num1=random.randint(1,10)num2=random.randint(1,10)operadores=['+','-','*']op=operadores[random.randint(0,2)]#escogiendo operador
#condicionalesifop=='+':answer=num1+num2
elif op=='-':answer=num1-num2
elif op=='*':answer=num1*num2
Luego le pedimos al usuario que ingrese su respuesta dandole los números aleatorios y el operador, luego ese dato lo convertimos en entero con la función int() para poder hacer operaciones matemáticas, será guardado en la variable answer_user.
import random
racha=0
num1=random.randint(1,10)
num2=random.randint(1,10)
operadores=['+','-','*']
op=operadores[random.randint(0,2)]#escogiendo operador#condicionalesif op=='+':
answer=num1+num2
elif op=='-':
answer=num1-num2
elif op=='*':
answer=num1*num2
print('cuanto es',num1,op,num2,'?')
answer_user=int(input('ingrese su respuesta: '))
El codigo anterior en la salida se vería así:
cuanto es 9 - 1 ?
ingrese su respuesta:
Ahora nos toca hacer la comparativa entre la respuesta de la computadora y el usuario para ver si continua jugando, y si esta bien la respuesta aumentamos la racha en +1.
import random
racha=0
num1=random.randint(1,10)
num2=random.randint(1,10)
operadores=['+','-','*']
op=operadores[random.randint(0,2)]#escogiendo operador#condicionalesif op=='+':
answer=num1+num2
elif op=='-':
answer=num1-num2
elif op=='*':
answer=num1*num2
print('cuanto es',num1,op,num2,'?')
answer_user=int(input('ingrese su respuesta: '))
#comparativaif answer_user==answer:
racha+=1print('racha:',racha,', Muy bien!!!')
else:
print('racha:',racha,', Perdiste')
Ya tenemos nuestro juego casi terminado, este es sólo un ciclo, si queremos varios ciclos pero no sabemos cuando terminará el juego, podemos usar WHILE, dejarlo como condición siempre True para que se ejecute infinitamente y dentro de la comparativa usar Break y Continue. break cuando respondemos mal y el ciclo se rompa, y continue para que pase al siguiente ciclo si respondimos bién.
import random
racha=0
operadores=['+','-','*']
while True:
num1=random.randint(1,10)
num2=random.randint(1,10)
op=operadores[random.randint(0,2)]#escogiendo operador#condicionalesif op=='+':
answer=num1+num2
elif op=='-':
answer=num1-num2
elif op=='*':
answer=num1*num2
print('cuanto es',num1,op,num2,'?')
answer_user=int(input('ingrese su respuesta: '))
#comparativaif answer_user==answer:
racha+=1print('racha:',racha,', Muy bien!!!')
continue#siguiente ciclo whileelse:
print('racha:',racha,', Perdiste')
break#rompe while y sale de los ciclos
Queda terminado el juego,ahora a jugar!!
cuanto es 6 * 7 ?
ingrese su respuesta: 42
racha: 1 , Muy bien!!!
cuanto es 3 * 10 ?
ingrese su respuesta: 30
racha: 2 , Muy bien!!!
cuanto es 3 - 4 ?
ingrese su respuesta: -1
racha: 3 , Muy bien!!!
cuanto es 6 + 10 ?
ingrese su respuesta: 16
racha: 4 , Muy bien!!!
cuanto es 8 + 3 ?
ingrese su respuesta: 123
racha: 4 , Perdiste
>