[Tutor] Random module help

Norman Khine norman at khine.net
Sat Oct 6 10:27:50 CEST 2007



Alan Gauld wrote:
> "Norman Khine" <norman at khine.net> wrote
> 
>>>>> a = [q[x] for x in q_keys]
>>>>> a
>> ['1q', '4q', '5q', '7q', '8q']
>>>>> a
>> ['1q', '4q', '5q', '7q', '8q']
>>
>>
>> This only returns the same questions, what am I doing wrong? How do 
>> I
>> return a different set?
> 
> I don't understand your problem.
> You are printing 'a' twice but not doing anything between times.
> So of course it prints the same thing. I'd be worried if it didn't!
> 
> Can you demonstrate what you think is wrong?
> 
> Alan G. 
> 
> 
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
> 

Sorry, I think I have it ;)

exam.py

import random
n_questions = 5
q = {1:'1q', 2:'2q', 3:'3q', 4:'4q', 5:'5q', 6:'6q', 7:'7q', 8:'8q', 
9:'9q', 0:'0q'}

if len(q) > n_questions:
    q_keys = random.sample(q.keys(), n_questions)
else:
    q_keys = q.keys()
q_keys.sort()
a = [q[x] for x in q_keys]
print a

So now when I execute python exam.py, I get:
python exam.py

['1q', '2q', '4q', '5q', '6q']
['1q', '4q', '5q', '7q', '8q']
['0q', '2q', '6q', '8q', '9q']
['0q', '1q', '2q', '4q', '9q']

But what I was wondering if possible in achieving is that my questions 
set (q) contains questions that are similar, i.e. they are written in 
different ways, so I wanted to get the random set of unique questions 
rather then have variations of the same question returned in my set.

All the questions are stored in one dictionary, perhaps I need to change 
this structure?

Does it make sense? ;)

Cheers


-- 
Norman


More information about the Tutor mailing list