What does the Unorderable Type error mean in Python?

python, python-3.x

Solution

`price_loyal` is a string (even if it contains numbers that you have found with `find`) that you are trying to compare to a numeric value (4.75)? For your comparison try

`float(price_loyal)`

UPDATE (thanks @agf):

With Python v 3.x you get the error message you mentioned.

>>> price_loyal = '555.5'
>>> price_loyal  > 5000.0
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    price_loyal > 5000.0
TypeError: unorderable types: str() > float()
>>> 

whereas

>>> float(price_loyal) > 5000.0
False

The version of Python makes a difference in this case, so probably a good idea to always mention what version one is working with. Previously ... with Python v 2.x

Your comparisons will be off without converting your `string` to a `float` first. E.g.,

price_loyal
'555.5'

This comparison with string and float gives `True`

price_loyal > 5000.0
True

This comparison with float and float gives `False` as it should

float(price_loyal) > 5000.0
False

There might be other problems, but this looks like one.

Problem

``` from urllib.request import urlopen page1 = urlopen("http://www.beans-r-us.biz/prices.html") page2 = urlopen("http://www.beans-r-us.biz/prices-loyalty.html") text1 = page1.read().decode("utf8") text2 = page2.read().decode("utf8") where = text2.find(">$") start_of_price = where + 2 end_of_price = where + 6 price_loyal = text2[start_of_price:end_of_price] price = text1[234:238] password = 5501 p = input("Loyalty Customers Password? : ") passkey = int(p) if passkey == password: while price_loyal > 4.74: if price_loyal < 4.74: print("Here is the loyal customers price :) :") print(price_loyal) else: print( "Price is too high to make a profit, come back later :) ") else: print("Sorry incorrect password :(, here is the normal price :") print(price) input("Thanks for using our humble service, come again :), press enter to close this window.") ``` The problem I'm having is that it runs until I get the the 4.74 part. Then it stops and complains about an unorderable type. I'm completely confused as to what that means.

Original source