[Tutor] Building Starships -- object of type 'int' has no len()
Joseph Lee
joseph.lee22590 at gmail.com
Fri Aug 15 21:29:19 CEST 2014
Hi Terry (if that's your name),
Start slow - don't think ahead too much. It is a good thing that
you know the end product, but sometimes when building a real-life
system, you might want to work with one aspect of the program at
a time (input, calculations, print, etc.) to make sure it works
as advertised before moving onto other things. Also, I put print
statements that prints "before and after" picture of a variable
to make sure that I and the computer are in agreement as to what
is what.
Good luck.
Cheers,
Joseph (UC Riverside)
----- Original Message -----
From: Terry--gmail <terry.kemmerer at gmail.com
To: Python_Tutor -- Mailing List <tutor at python.org
Date sent: Fri, 15 Aug 2014 13:21:17 -0600
Subject: [Tutor] Building Starships -- object of type 'int' has
no len()
Thanks for your response JL.
I added the following Exception to the code snippet:
for line_number in range(len(catalog2)):
for col in range(len(catalog2[line_number])):
try:
if lens[col] < len(catalog2[line_number][col]):
lens[col] = len(catalog2[line_number][col])
except TypeError:
print(catalog2)
print("col #: ", col)
print("line_number", line_number)
print("catalog2 col content: ", catalog2[line_number][col])
print("catalog2 col content TYPE: ",
type(catalog2[line_number][col]))
exit()
Below is the exception printout. I ordered the catalog2 printout
portion
to be more readable:
[['Drives', 'Type', 'Price', 'Max Speed', 'Energy Drain',
'Rq-Crew', '',
'', ''],
['Drives', 'Solar Sail', 3, 1, 'None', 2, '', '', ''],
<<------------------------here's the problem
['Drives', 'Bussard Ramjet', '10', '7', '2', '3', '', '', ''],
['Drives', 'Fusion', '70', '15', '5', '8', '', '', ''],
['Drives', 'Matter-Antimatter', '1500', '145', '15', '13', '',
'', ''],
['Drives', 'Warp Drive', '2500', '250', '45', '17', '', '',
'']]
col #: 2
line_number 1
catalog2 col content: 3
catalog2 col content TYPE: <class 'int'
Hmmm. It appears that when I bought a Solar Sail the first time
through,
my code has altered my master Catalog away from holding strings
to
holding integers for that particular row-record, which is why
when I
return to a particular category to make a second purchase, the
code
errors out when it hits the integers that are suppose to be
strings.
You know, for some reason, it just never sank into my thick skull
that
the integer 3 doesn't have a length. I just proved that to
myself on the
python commandline. It's just that my eyes see the number 3
displayed on
the screen and my blond brain automatically counts it as
occupying 1
space in the printout and thinks it's length is 1....which is why
the
texts say to use str() on integers and floats in mixed printouts,
I guess.
Thanks! I guess the above code is actually fine.
Now, I just need to discover how and where I am somehow altering
the
master catalog where everything is suppose to be contained in
strings.
The problem with that is, I don't think there is any code to mess
with
the master catalog. I create catalog2 from scans of catalog each
time
another category is picked. And I store the chosen parts, after
a
quantity has been selected, in a list called myship. So, the
problem
must be where I do the quanity calculation, as that is done in
integer
form before the new row is added to myship. So, I will start
there as I
suspect I didn't switch it back to strings when I altered the
catalog2
row, just before I appended it to myship.
Thanks for putting me back on track!
More information about the Tutor
mailing list