[pyar] Randomizar diccionarios para un programa.

Javier Marín nano.world.contact en gmail.com
Mie Mayo 9 16:47:33 ART 2012


A ver, hice lo ultimo que me dijiste porque me parece además de más
sencillo, mejor planteado para un programa, aunque creo que estoy haciendo
mal.

Este es el código:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import random

preguntas = [('Como me llamo?',[('a: ', 'nano'), ('b: ', 'javier'), ('c: ',
'Pedro')]), ('cuanto es 1+1', [('a: ', '1'), ('b: ', '2'), ('c: ', '3')])]
azar = random.shuffle(preguntas)

print preguntas[azar]

Y este es el log:

Traceback (most recent call last):
  File "prueba_rapida.py", line 9, in <module>
    print preguntas[azar]
TypeError: list indices must be integers, not NoneType

Nunca he usado ese tipo de funciones shuffle pero ya me llama la
atención... voy a tratar de conseguir los metodos o atributos de random en
español.

El 9 de mayo de 2012 15:04, Alejandro Santos <listas en alejolp.com> escribió:

> 2012/5/9 Javier Marín <nano.world.contact en gmail.com>:
> > El título no es muy explicativo, pero no consigo otra manera de
> llamarle...
> > La cosa es que llevo rato tratando de hacer un juego medio tonto que te
> hace
> > preguntas al azar y te da 3 opciones para elegir como respuesta.
> >
> >
> > preguntas_respuestas = {'Cuanto es 1+1':('a: 2','b: 5','c: 8'),'Tu mama
> te
> > quiere?':['a: si', 'b: no', 'c: tal vez']}
> >
>
> Es posible que haya otras formas de encarar este problema, pero no me
> termina de convencer que guardes las preguntas y respuestas en un
> dicccionario de la forma que lo hacés, y creo que tu confusión aparece
> por ese lado.
>
> Tendría sentido usar un diccionario si lo usás para relacionar una
> pregunta con la respuesta correcta, de forma que sea muy fácil ver si
> el usuario ingresó correctamente la respuesta. Pero tu código no dice
> eso.
>
> La razón es muy simple: los elementos de un diccionario no están
> ordenados, y lo que vos estás buscando es justamente ordenarlos con un
> criterio específico: al azar.
>
> Una buena forma de encararlo es que cambies el dict por una lista, y
> hagas random.shuffle(preguntas), donde preguntas es la lista de
> preguntas. Ahí vas a tener las preguntas mezcladas.
>
> Por ejemplo:
>
> preguntas = [("Cuanto es 1+1", [('a', '2'), ('b', '3'), ('c', '4')]),
> ("Cual es la respuesta a la vida, el universo y el resto?", [('a',
> '3'), ('b', '77'), ('c', '42'),]), ("...", [...])]
>
> --
> Alejandro Santos
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 
Nano.
@_nanodice_
Blog: nano-dice <http://nano-dice.blogspot.com>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120509/2977d453/attachment.html>


More information about the pyar mailing list