[pyar] Randomizar diccionarios para un programa.

Mariano Verdú verdumariano en gmail.com
Mie Mayo 9 16:56:25 ART 2012


El 9 de mayo de 2012 16:47, Javier Marín <nano.world.contact en gmail.com>escribió:

> 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>
>
>
> _______________________________________________
> 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
>

Podríamos hacer algo así ?


from random import choice

preguntas_respuestas = {'Cuanto es 1+1':('a: 2','b: 5','c: 8'),'Tu mama
te quiere?':['a: si', 'b: no', 'c: tal vez']}

pregunta_azar = choice(preguntas_respuestas)


Saludos
-- 
Mariano

http://erdm.com.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120509/3d5e4bf3/attachment.html>


More information about the pyar mailing list