I wanted to do this little program that shows a list of names and give them random numbers. The user have to memorize each name-number set and must give the correct number to the name chosen randomly.
[code]
def mainGame():
playing = True
#The lists are matching names with their numbers.
nameList = ('Joe', 'Alice', 'Bob', 'Eve')
#numberList = (returnRandom(0, 10), returnRandom(0, 10), returnRandom(0, 10), returnRandom(0, 10))
#Return random is a function I made that spits out a random number given the range. Shortcut for random.randint(min, max)
for i in range(0, len(numberList)):
print nameList[i], ":", numberList[i]
while playing:
rand = returnRandom(0, len(numberList))
print "What is %s's number?" % nameList[rand]
if raw_input("Choice: ") == numberList[rand]:
playing = False
print "Congratulation, you finished this minigame !"
[/code]
Output:
[code]
Joe : 2
Alice : 10
Bob : 5
Eve : 4
What is Bob's number?
Choice: 5
[/code]
(I know I should use a dictionary, but I can't seem to work it out. Any help is appreciated though.)
The problem is that after a few iterations I get this error:
[code]
print "What is %s's number?" % nameList[rand]
IndexError: tuple index out of range
[/code]
It can be after 3 iterations, or 5 or 6. And I don't why, its not supposed to go out of range at all ! Halp.
Comments
Say my list looks like this:
a = [1, 2, 3]
Then,
len(a) == 3
However,
a[2] == 3
a[3] == error
In your code, after a while, it tries to hit an index beyond the range of the tuple. This happens because it's allowed to look up nameList[len(numberList)], but the highest index is len[numberList - 1].
Hope that helps!