#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

#### Categories

Welcome to the new platform of Programmers Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use it's exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

# Somehow this won't work.

Posts: 3Member
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.

· ·

• Posts: 6Member
This post has been deleted.
· ·
• Posts: 6Member
This post has been deleted.
· ·
• Posts: 39Member
The highest index of a list is len(list) - 1 (b/c it's zero-indexed).
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!
· ·