7
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.")

我遇到的问题是它一直运行到我得到 4.74 部分。然后它停止并抱怨一个不可排序的类型。我完全不明白这意味着什么。

4

2 回答 2

6

price_loyalfind是要与数值 (4.75) 进行比较的字符串(即使它包含您使用 找到的数字)?为了您的比较尝试

float(price_loyal)

更新(感谢@agf):

使用 Python v 3.x,您会收到您提到的错误消息。

>>> 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()
>>> 

然而

>>> float(price_loyal) > 5000.0
False

在这种情况下,Python 的版本会有所不同,因此总是提及正在使用的版本可能是个好主意。以前 ... 使用 Python v 2.x

您的比较将被关闭,而不会将您转换stringfloat第一个。例如,

price_loyal
'555.5'

这种与字符串和浮点数的比较给出了True

price_loyal > 5000.0
True

与 float 和 float 的比较给出False了它应该的结果

float(price_loyal) > 5000.0
False

可能还有其他问题,但这看起来像一个。

于 2012-05-28T04:03:18.293 回答
2

我不是 Python 编码员,但它看起来像是在抱怨你试图将一个字符串与一个浮点数进行比较,我猜 Python 不会为你而杂耍。

您应该将字符串转换为浮点数,但这是在 Python 中完成的。

于 2012-05-28T04:02:30.863 回答