python - 添加/删除列表中的项目

标签 python

我正在尝试创建一个可以在其库存中添加和删除项目的玩家。我一切正常,我只有 1 个小问题。每次打印库存时,也会出现“无”。我一直在弄乱它以尝试删除它,但无论我做什么,“无”总是出现在程序中!我知道我只是缺少一些简单的东西,但我终生无法弄清楚。

class Player(object):

  def __init__(self, name, max_items, items):
    self.name=name
    self.max_items=max_items
    self.items=items

  def inventory(self):
    for item in self.items:
        print item

  def take(self, new_item):
    if len(self.items)<self.max_items:
        self.items.append(new_item)
    else:
        print "You can't carry any more items!"

  def drop(self, old_item):
    if old_item in self.items:
        self.items.remove(old_item)
    else:
        print "You don't have that item."


def main():
  player=Player("Jimmy", 5, ['sword', 'shield', 'ax'])
  print "Max items:", player.max_items
  print "Inventory:", player.inventory()

  choice=None
  while choice!="0":
    print \
    """
    Inventory Man

    0 - Quit
    1 - Add an item to inventory
    2 - Remove an item from inventory
    """

    choice=raw_input("Choice: ")
    print

    if choice=="0":
        print "Good-bye."

    elif choice=="1":
        new_item=raw_input("What item would you like to add to your inventory?")
        player.take(new_item)
        print "Inventory:", player.inventory()

    elif choice=="2":
        old_item=raw_input("What item would you like to remove from your inventory?")
        player.drop(old_item)
        print "Inventory:", player.inventory()


    else:
        print "\nSorry, but", choice, "isn't a valid choice."

main()

raw_input("Press enter to exit.")

最佳答案

问题是这条语句:

print "Inventory:", player.inventory()

您要告诉 Python 打印从 player.inventory() 返回的值。但是您的 inventory() 方法只打印库存,它不返回任何东西 - 因此返回值隐式为 None。

您可能想明确选择:

print "Inventory:"
player.print_inventory()

或者您可以让它返回一个字符串并执行此操作:

print "Inventory:", player.inventory_as_str()

关于python - 添加/删除列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2496926/

相关文章:

python - 是否可以在 python 中创建图排列?

python - os.nice() 的最大nice值

python - 尝试使用 FastAPI 和 python-docx 库读取 docx 文件 : AttributeError: 'bytes' object has no attribute 'seek' error

python - Tensorflow CNN 模型总是预测同一类

python - 时间序列数据框用相同周期的数据填充值

python - 无法使用 Mosquitto/Paho for Python 接收超过 20 条 MQTT 消息

javascript - 从网站获取新闻

python - Pandas :从存储为列值的列表中创建新列

python - 如何将xls转换为xlsx

python - 如何在函数中更改python字典中的类型?