在我的程序中定义take()

时间:2014-07-21 03:17:02

标签: python

 def take(self, add_item):
        if self.__items < 8:
            self.__items.pop(add_item)
        else:
            print("You already have the max items in your inventory,sorry")

这是我对我的程序唯一的问题,我正在试图弄清楚究竟是什么问题

Traceback (most recent call last):
  File "C:\Python31\player.py", line 77, in <module>
    main()
  File "C:\Python31\player.py", line 32, in main
    play.take(add_item)
  File "C:\Python31\player.py", line 66, in take
    if self.__items < 8:
TypeError: unorderable types: list() < int()

我正在试图找出为什么我一直收到此错误消息。我尝试更改代码并仍然收到相同的错误消息

3 个答案:

答案 0 :(得分:2)

您的商品为list,您无法与int

共同使用

我认为你检查长度

if len(self.__items) < 8 :

在程序中还有一件事就是将字符串发送到take方法并执行pop() 我认为它不可能。

我认为您要使用append(add_items)

附加它

答案 1 :(得分:0)

您需要使用len()来获取列表中的元素数量

if len(self.__items) < 8:

答案 2 :(得分:0)

如果您打算将项目add_item 添加到列表中,则表示您使用了错误的功能。您应该使用append(add_item),而不是pop(add_item)

def take(self, add_item):
    if len(self.__items) < 8:
        self.__items.append(add_item)
    else:
        print("You already have the max items in your inventory,sorry")

This Python documentation解释了列表方法的作用。 pop期待一个整数参数,这导致了您看到的错误。 pop会从列表中删除一个元素。

正如其他人已经指出的那样,您还需要使用len(self.__items)检查同一函数中列表的长度