Foros del Web » Programando para Internet » Python »

Hacer preguntas aleatorias con random

Estas en el tema de Hacer preguntas aleatorias con random en el foro de Python en Foros del Web. La consigna es la siguiente: "Realiza una trivia donde al usuario le muestre una pregunta, tres opciones y pida por pantalla cual es la correcta. ...
  #1 (permalink)  
Antiguo 27/05/2011, 18:12
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 1
Hacer preguntas aleatorias con random

La consigna es la siguiente: "Realiza una trivia donde al usuario le muestre una pregunta, tres opciones y pida por pantalla cual es la correcta. Si es correcta, suma un punto, si no es correcta, no suma nada y da una justificacion de porqué está mal. Las preguntas deben ser realizadas siempre en un orden aleatorio."

Acá les dejo el codigo que hice hasta ahora, el tema es que no se como hacer que el if al ser correcto y hacer la segunda vuelta por el for in range, como que se borre. Porfavor pido solo cosas simples, sin listas, ni nada. Basicamente con lo que esta escrito en el siguiente codigo (como veran falta ponjer las justificaciones todavía):
Código:
from random import random
preg=0
op1=0
op2=0
op3=0
corr=0
just=0
for n1 in range(1,13):
    n1=int(random()*10)
    if n1==0:
        preg='¿A qué grupo pertenece la hemoglobina?'
        op1='Macromolécula.'
        op2='Individuo.'
        op3='Átomo.'
        corr=1
        just="Es una macromolécula ya que la hemoglobina es una proteína, y una proteína es una macromolécula."
    if n1==1:
        preg='¿A qué grupo pertenece el carbono?'
        op1='Molécula.'
        op2='Comunidad.'
        op3='Átomo.'
        corr=3
        just="hola"
    if n1==2:
        preg='¿A qué grupo pertenecen los loros de la reserva natural de "Las piedras"?'
        op1='Población.'
        op2='Individuo.'
        op3='Comunidad.'
        corr=1
        just="hola"
    if n1==3:
        preg='¿A qué grupo pertenece la piel?'
        op1='Órgano'
        op2='Individuo.'
        op3='Tejido'
        corr=3
        just="hola"
    if n1==4:
        preg='¿A qué grupo pertenece la hoja de la planta?'
        op1='Individuo.'
        op2='Órgano.'
        op3='Tejido'
        corr=2
        just="hola"
    if n1==5:
        preg='¿A qué grupo pertenece el oxígeno?'
        op1='Partícula subatómica.'
        op2='Átomo.'
        op3='Molécula.'
        corr=2
        just="hola"
        coso=5
    if n1==6 and coso!=5:
        preg='¿A qué grupo pertenece la actina?'
        op1='Macromolécula.'
        op2='Individuo.'
        op3='Átomo.'
        corr=1
        just="hola"
    if n1==7:
        preg='¿A qué grupo pertenece el protón?'
        op1='Partícula subatómica.'
        op2='Átomo.'
        op3='Molécula.'
        corr=1
        just="hola"
    if n1==8:
        preg='¿A qué grupo pertenece la pecera?'
        op1='Ecosistema.'
        op2='Población.'
        op3='Comunidad.'
        corr=1
        just="hola"
    if n1==9:
        preg='¿A qué grupo pertenece el O2?'
        op1='Molécula.'
        op2='Individuo.'
        op3='Átomo.'
        corr=1
        just="hola"
    if n1==10:
        preg='¿A qué grupo pertenece la arteria aorta?'
        op1='Órgano.'
        op2='Individuo.'
        op3='Tejido.'
        corr=1
        just="hola"
    if n1==11:
        preg='¿A qué grupo pertenece la "pisum sativum"?'
        op1='Comunidad.'
        op2='Individuo.'
        op3='Población.'
        corr=2
        just="hola"
def t(p,p01,p02,p03,c,j):
  print p
  print "Seleccione la opción correcta:"
  print "1.", p01
  print "2.", p02
  print "3.", p03
  z=int(raw_input('Ingrese la opción correcta, 1, 2, o 3: '))
  if z==c:
    x=1
    print '¡La opción elegida es correcta!'
  else:
    x=0
    print 'La opción elegida es incorrecta. La respuesta correcta era la', c,'. La explicación de por qué es', c,'es la siguiente: ', j
  return (x)
p1=t(preg,op1,op2,op3,corr,just)
p2=t(preg,op1,op2,op3,corr,just)
p3=t(preg,op1,op2,op3,corr,just)
p4=t(preg,op1,op2,op3,corr,just)
p5=t(preg,op1,op2,op3,corr,just)
p6=t(preg,op1,op2,op3,corr,just)
p7=t(preg,op1,op2,op3,corr,just)
p8=t(preg,op1,op2,op3,corr,just)
p9=t(preg,op1,op2,op3,corr,just)
p10=t(preg,op1,op2,op3,corr,just)
p11=t(preg,op1,op2,op3,corr,just)
p12=t(preg,op1,op2,op3,corr,just)
rt=p1+p2+p3+p4+p5+p6+p7+p8+p9+p10+p11+p12
print 'El resultado final es:', rt,'.'

Última edición por maxtrata; 27/05/2011 a las 18:20
  #2 (permalink)  
Antiguo 27/05/2011, 18:54
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Hacer preguntas aleatorias con random

Perdón, el código original es este:
Código:
from random import random
preg=0
op1=0
op2=0
op3=0
corr=0
just=0
for n1 in range(1,13):
    n1=int(random()*10)
    if n1==0:
        preg='¿A qué grupo pertenece la hemoglobina?'
        op1='Macromolécula.'
        op2='Individuo.'
        op3='Átomo.'
        corr=1
        just="Es una macromolécula ya que la hemoglobina es una proteína, y una proteína es una macromolécula."
    if n1==1:
        preg='¿A qué grupo pertenece el carbono?'
        op1='Molécula.'
        op2='Comunidad.'
        op3='Átomo.'
        corr=3
        just="hola"
    if n1==2:
        preg='¿A qué grupo pertenecen los loros de la reserva natural de "Las piedras"?'
        op1='Población.'
        op2='Individuo.'
        op3='Comunidad.'
        corr=1
        just="hola"
    if n1==3:
        preg='¿A qué grupo pertenece la piel?'
        op1='Órgano'
        op2='Individuo.'
        op3='Tejido'
        corr=3
        just="hola"
    if n1==4:
        preg='¿A qué grupo pertenece la hoja de la planta?'
        op1='Individuo.'
        op2='Órgano.'
        op3='Tejido'
        corr=2
        just="hola"
    if n1==5:
        preg='¿A qué grupo pertenece el oxígeno?'
        op1='Partícula subatómica.'
        op2='Átomo.'
        op3='Molécula.'
        corr=2
        just="hola"
    if n1==6:
        preg='¿A qué grupo pertenece la actina?'
        op1='Macromolécula.'
        op2='Individuo.'
        op3='Átomo.'
        corr=1
        just="hola"
    if n1==7:
        preg='¿A qué grupo pertenece el protón?'
        op1='Partícula subatómica.'
        op2='Átomo.'
        op3='Molécula.'
        corr=1
        just="hola"
    if n1==8:
        preg='¿A qué grupo pertenece la pecera?'
        op1='Ecosistema.'
        op2='Población.'
        op3='Comunidad.'
        corr=1
        just="hola"
    if n1==9:
        preg='¿A qué grupo pertenece el O2?'
        op1='Molécula.'
        op2='Individuo.'
        op3='Átomo.'
        corr=1
        just="hola"
    if n1==10:
        preg='¿A qué grupo pertenece la arteria aorta?'
        op1='Órgano.'
        op2='Individuo.'
        op3='Tejido.'
        corr=1
        just="hola"
    if n1==11:
        preg='¿A qué grupo pertenece la "pisum sativum"?'
        op1='Comunidad.'
        op2='Individuo.'
        op3='Población.'
        corr=2
        just="hola"
def t(p,p01,p02,p03,c,j):
  print p
  print "Seleccione la opción correcta:"
  print "1.", p01
  print "2.", p02
  print "3.", p03
  z=int(raw_input('Ingrese la opción correcta, 1, 2, o 3: '))
  if z==c:
    x=1
    print '¡La opción elegida es correcta!'
  else:
    x=0
    print 'La opción elegida es incorrecta. La respuesta correcta era la', c,'. La explicación de por qué es', c,'es la siguiente: ', j
  return (x)
p1=t(preg,op1,op2,op3,corr,just)
p2=t(preg,op1,op2,op3,corr,just)
p3=t(preg,op1,op2,op3,corr,just)
p4=t(preg,op1,op2,op3,corr,just)
p5=t(preg,op1,op2,op3,corr,just)
p6=t(preg,op1,op2,op3,corr,just)
p7=t(preg,op1,op2,op3,corr,just)
p8=t(preg,op1,op2,op3,corr,just)
p9=t(preg,op1,op2,op3,corr,just)
p10=t(preg,op1,op2,op3,corr,just)
p11=t(preg,op1,op2,op3,corr,just)
p12=t(preg,op1,op2,op3,corr,just)
rt=p1+p2+p3+p4+p5+p6+p7+p8+p9+p10+p11+p12
print 'El resultado final es:', rt,'.'
  #3 (permalink)  
Antiguo 27/05/2011, 20:46
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Hacer preguntas aleatorias con random

Te podría poner tu código corregido pero con esto no aprenderías nada, así que mejor te ayudo a pensar o a decirte puntos.

1.- En cada if n1 == ...
Debes de llamar a tu función p. Y solamente tienes que sumar en alguna variable los puntos que vayas obteniendo.


2.- Si quieres usar tu función en el for no olvides declararla antes.
¿O a poco tu haces esto?
Código:
print a
a = 1
Cita:
Iniciado por maxtrata
Porfavor pido solo cosas simples, sin listas, ni nada
Pero si las listas son lo mejor del mundo, excepto por los diccionarios.
  #4 (permalink)  
Antiguo 30/05/2011, 11:48
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Hacer preguntas aleatorias con random

Era un trabajo para el cole, no pasa nada, ya lo entregue y no lo logre hacer xD
Si pudieras ponerme el codigo asi lo veo y lo pienso, y si pudieras explicarlo tambien seria de gran ayuda, ya que probablemente lo siga viendo y no entendi cómo hacerlo u.u

Saludos
  #5 (permalink)  
Antiguo 30/05/2011, 13:25
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Hacer preguntas aleatorias con random

Lo unico que hice fue mover un poco de código. No se como llegaste tan lejos y no te diste cuenta de tu error.

Código Python:
Ver original
  1. #coding: utf-8
  2. from random import random
  3. preg=0
  4. op1=0
  5. op2=0
  6. op3=0
  7. corr=0
  8. just=0
  9. p1=p2=p3=p4=p5=p6=p7=p8=p9=p10=p11=p12=0
  10. def t(p,p01,p02,p03,c,j):
  11.     print p
  12.     print "Seleccione la opción correcta:"
  13.     print "1.", p01
  14.     print "2.", p02
  15.     print "3.", p03
  16.     z=int(raw_input('Ingrese la opción correcta, 1, 2, o 3: '))
  17.     if z==c:
  18.         x=1
  19.         print '¡La opción elegida es correcta!'
  20.     else:
  21.         x=0
  22.         print 'La opción elegida es incorrecta. La respuesta correcta era la', c,'. La explicación de por qué es', c,'es la siguiente: ', j
  23.     return (x)
  24.  
  25. for n1 in range(1,13):
  26.     n1=int(random()*10)
  27.     if n1==0:
  28.         preg='¿A qué grupo pertenece la hemoglobina?'
  29.         op1='Macromolécula.'
  30.         op2='Individuo.'
  31.         op3='Átomo.'
  32.         corr=1
  33.         just="Es una macromolécula ya que la hemoglobina es una proteína, y una proteína es una macromolécula."
  34.         p1=t(preg,op1,op2,op3,corr,just)
  35.     if n1==1:
  36.         preg='¿A qué grupo pertenece el carbono?'
  37.         op1='Molécula.'
  38.         op2='Comunidad.'
  39.         op3='Átomo.'
  40.         corr=3
  41.         just="hola"
  42.         p2=t(preg,op1,op2,op3,corr,just)
  43.     if n1==2:
  44.         preg='¿A qué grupo pertenecen los loros de la reserva natural de "Las piedras"?'
  45.         op1='Población.'
  46.         op2='Individuo.'
  47.         op3='Comunidad.'
  48.         corr=1
  49.         just="hola"
  50.         p3=t(preg,op1,op2,op3,corr,just)
  51.     if n1==3:
  52.         preg='¿A qué grupo pertenece la piel?'
  53.         op1='Órgano'
  54.         op2='Individuo.'
  55.         op3='Tejido'
  56.         corr=3
  57.         just="hola"
  58.         p4=t(preg,op1,op2,op3,corr,just)
  59.     if n1==4:
  60.         preg='¿A qué grupo pertenece la hoja de la planta?'
  61.         op1='Individuo.'
  62.         op2='Órgano.'
  63.         op3='Tejido'
  64.         corr=2
  65.         just="hola"
  66.         p5=t(preg,op1,op2,op3,corr,just)
  67.     if n1==5:
  68.         preg='¿A qué grupo pertenece el oxígeno?'
  69.         op1='Partícula subatómica.'
  70.         op2='Átomo.'
  71.         op3='Molécula.'
  72.         corr=2
  73.         just="hola"
  74.         coso=5
  75.         p6=t(preg,op1,op2,op3,corr,just)
  76.     if n1==6 and coso!=5:
  77.         preg='¿A qué grupo pertenece la actina?'
  78.         op1='Macromolécula.'
  79.         op2='Individuo.'
  80.         op3='Átomo.'
  81.         corr=1
  82.         just="hola"
  83.         p7=t(preg,op1,op2,op3,corr,just)
  84.     if n1==7:
  85.         preg='¿A qué grupo pertenece el protón?'
  86.         op1='Partícula subatómica.'
  87.         op2='Átomo.'
  88.         op3='Molécula.'
  89.         corr=1
  90.         just="hola"
  91.         p8=t(preg,op1,op2,op3,corr,just)
  92.     if n1==8:
  93.         preg='¿A qué grupo pertenece la pecera?'
  94.         op1='Ecosistema.'
  95.         op2='Población.'
  96.         op3='Comunidad.'
  97.         corr=1
  98.         just="hola"
  99.         p9=t(preg,op1,op2,op3,corr,just)
  100.     if n1==9:
  101.         preg='¿A qué grupo pertenece el O2?'
  102.         op1='Molécula.'
  103.         op2='Individuo.'
  104.         op3='Átomo.'
  105.         corr=1
  106.         just="hola"
  107.         p10=t(preg,op1,op2,op3,corr,just)
  108.     if n1==10:
  109.         preg='¿A qué grupo pertenece la arteria aorta?'
  110.         op1='Órgano.'
  111.         op2='Individuo.'
  112.         op3='Tejido.'
  113.         corr=1
  114.         just="hola"
  115.         p11=t(preg,op1,op2,op3,corr,just)
  116.     if n1==11:
  117.         preg='¿A qué grupo pertenece la "pisum sativum"?'
  118.         op1='Comunidad.'
  119.         op2='Individuo.'
  120.         op3='Población.'
  121.         corr=2
  122.         just="hola"
  123.         p12=t(preg,op1,op2,op3,corr,just)
  124.  
  125. rt=p1+p2+p3+p4+p5+p6+p7+p8+p9+p10+p11+p12
  126. print 'El resultado final es:', rt,'.'
  #6 (permalink)  
Antiguo 30/05/2011, 18:49
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Hacer preguntas aleatorias con random

Uhhh, que b*ludo! JAJAJAJA como no me di cuenta! Muchisimas gracias, una pregunta nomás. Lo primero de p1=p2=p3 y eso, es lo mismo que hacer
p1=0
p2=0
p3=0
no?

Saludos :)


EDIT: Y, no lo habre visto porque claramente estoy empezando xD. tendre, no se, dos meses y medio de python, dos meses. Pero pienso seguir aprendiendo :)

Última edición por maxtrata; 30/05/2011 a las 19:07
  #7 (permalink)  
Antiguo 30/05/2011, 19:37
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Hacer preguntas aleatorias con random

Si hacer
p1=p2=p3=0 es lo mismo que hacer
p1 = 0
p2 = 0
p3 = 0
  #8 (permalink)  
Antiguo 31/05/2011, 15:37
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Hacer preguntas aleatorias con random

Dale, muchas gracias loco :)
  #9 (permalink)  
Antiguo 01/06/2011, 20:43
 
Fecha de Ingreso: marzo-2010
Ubicación: Mérida, Venezula
Mensajes: 73
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Hacer preguntas aleatorias con random

Cita:
pero si las listas son lo mejor del mundo, excepto por los diccionarios.
de pana!!!!

Etiquetas: random
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:14.