I get this error when I try to figure out the low and high prices for my BeautifulSoup web scraper. I attached the code below. Shouldn’t my list be a list of ints?
I went through the similar NoneType questions before posting this, but the solutions did not work (or maybe I didn’t understand them!)
Traceback (most recent call last):
File "/home/user-machine/Desktop/cl_phones/main.py", line 47, in <module>
print "Low: $" + intprices[0]
TypeError: 'NoneType' object is not subscriptable
Relevant Snippet:
intprices = []
newprices = prices[:]
total = 0
for k in newprices:
total += int(k)
intprices.append(int(k))
avg = total/len(newprices)
intprices = intprices.sort()
print "Average: $" + str(avg)
print "Low: $" + intprices[0]
print "High: $" + intprices[-1]
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
intprices.sort() is sorting in place and returns None, while sorted( intprices ) creates a brand new sorted list from your list and returns it.
In your case, since you’re not wanting to keep intprices around in its original form simply doing intprices.sort() without reassigning will solve your issue.
Method 2
Your problem is the line:
intprices = intprices.sort()
The .sort() method on a list operates on the list in-place, and returns None. Just change it to:
intprices.sort()
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0