[Tutor] ....and another thing!

charlie derr wrong@crosswinds.net
Fri, 3 Aug 2001 16:46:09 -0400


My guess is that the line:

	choose=random.randint(1,string.atoi(`total_cards`))

is incorrect.  I think you are never picking the first card, and you are
occasionally picking outside the range of schmack[].  Remember that python
indexes start at 0, not at 1.  I also don't really understand why you use
the string.atoi() construction (but maybe there's a reason for it).  Try
this:

	choose=random.randint(0, total_cards - 1)

(or if there's a reason for string.atoi() that i'm missing):

	choose=random.randint(0, string.atoi(`total_cards`) - 1)


good luck,
	~c


+
+In the following:
+
+mport random
+import string
+cards=open('\windows\desktop\cards.txt','r')
+schmack=cards.readlines()
+counter=0
+while counter <10:
+	total_cards=len(schmack)
+	choose=random.randint(1,string.atoi(`total_cards`))
+	chosen=schmack[choose]
+	del schmack[choose]
+	print chosen
+	counter=counter+1
+
+
+I will get the occasional:
+
+Traceback (most recent call last):
+  File "reader.py", line 9, in ?
+    chosen=schmack[choose]
+IndexError: list index out of range
+>Exit code: 1
+
+It seems to me that:
+
+total_cards=len(schmack)
+
+should recalculate the number of items in the list with each
+iteration of the
+loop. Since there are 72 items in the list, and one item is
+removed from the
+list at the end of every iteration, it stands to reason that the
+list index
+should be accurately recalculated by len(). Where am I going wrong?
+
+_______________________________________________
+Tutor maillist  -  Tutor@python.org
+http://mail.python.org/mailman/listinfo/tutor
+