Ver Mensaje Individual
  #33 (permalink)  
Antiguo 17/11/2011, 18:16
Avatar de nanotime
nanotime
 
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 13 años
Puntos: 6
Respuesta: Problemas con mini programas.

Cita:
Tienes que usar un raw_input, y comparar la respuesta con algo, por ejemplo sí/no o yes/no. También debes tener en cuenta que tal como lo haces no es improbable (exactamente el 25%) que la respuesta que tú generes sea un número primo, o sea, que es imposible que aciertes. Como sólo es hasta el 100 yo haría dos bucles, y multiplicaría todos los elementos del primero por los del segundos para tener los números compuestos del 1 al 100.
Hmm se generan dos números del 1 al 10 y se genera una variable con un número aleatorio entre 1 y 100, recuerda que el resultado mínimo que puede salir es 1 (1 * 1) y el máximo es 100 (10 * 10), el usuario solo debe decir si ese número aleatorio que se muestra es el resultado de la multiplicación de los dos números mostrados.

Estoy tratando de hacer las comparaciones pero al parecer mi lógica está bastante mal...

Código Python:
Ver original
  1. #    -*- coding: utf-8 -*-
  2. #    Programa que genera dos números aleatorios entre 1 y 10, luego genera un tercer
  3. #    valor aleatorio con todos los posibles resultados de la multiplicación de los
  4. #    dos primeros valores. El programa pregunta al usuario si ese último valor es
  5. #    corresponde a la multiplicación de los primeros valores mostrados y le dice si
  6. #    es correcta la respuesta o no.
  7. import random
  8. a = random.randint(1,10)
  9. b = random.randint(1,10)
  10. c = a*b
  11. posibles_resultados = random.randint(1,100)
  12. print a,b
  13. print str(a)+'x'+str(b)+'='+str(posibles_resultados)
  14. respuesta = raw_input('¿El resultado de la operación anterior es correcto? s/n')
  15. if respuesta ==  s and a*b = posibles_resultados:
  16.     print 'Respuesta correcta'
  17.     print '_'*5
  18. elif respuesta == n and a*b != posibles_resultados:
  19.     print 'Respuesta correcta'
  20. else:
  21.     print 'Respuesta equivocada'

Imprimo los primeros valores, luego imprimo una operación en strig y pregunto si eso que se muestra es correcto. Si responde sí, y a*b = posibles_resultados dice que es correcto. Si dice que no y, obviamente la operación es errónea, también le dirá que es correcto. En caso de que se equivoque, le dice que está mal.

Ahora, tienes razón, la posibilidad de que sea correcta la respuesta es mínima en comparación de que sea equivocada, pero no sé aún como puedo equilibrar eso para que sea relativamente equitativo... Al final el programita terminó siendo un tanto más fastidioso de lo que pensé.

Por cierto, el error que me tira al tratar de correr es:

Código:
                               ^
SyntaxError: invalid syntax
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 61, in apport_excepthook
    binary = os.path.realpath(os.path.join(os.getcwdu(), sys.argv[0]))
  File "/usr/lib/python2.7/posixpath.py", line 71, in join
    path += '/' + b
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 13: ordinal not in range(128)

Original exception was:
  File "multiplicación_niño.py", line 15
    if respuesta ==  s and a*b = posibles_resultados:
                               ^
SyntaxError: invalid syntax
me gustaría ver un ejemplo de los bucles, imagino que con un for in es lo más adecuado, aún no domino bien todo esto y me confunden un tanto estas iteraciones.

Ahora claro, si quiero multiplicar en un bucle todos los elementos de a y b debería hacerlo con tuplas, no? Joder, se me inunda la cabeza de dudas.

Última edición por nanotime; 17/11/2011 a las 18:54 Razón: Siguen lloviendome preguntas.