繁体   English   中英

如何为用户raw_input()创建全局命令; 访问库存清单?

[英]How can I create a global command for a user raw_input(); access inventory list?

我不是真的100%知道如何问这个问题,但是这里有:

我正在艰难地学习Python,并且在Ex上学习。 45,我应该自己创建一个基于文本的游戏。 我不得不拉别人的代码来进行库存(我将在下面提供代码),但是我一生都无法弄清楚:如果用户在任何raw_input()中键入“ inventory”(跨多个类),如何显示清单内容? 我所能想到的就是这个的更复杂的版本:

if raw_input() == "inventory"
    print ???

但我不知道该如何显示游戏清单(或???)或如何使“清单”成为全局命令...我知道这看起来非常准,但除非经过研究,否则我不会来这里并试图自己找到答案。 感谢任何可以提供帮助的人,这真令人沮丧!

这是我正在使用的库存系统:

class Item(object):
  def __init__(self, name, quantity=1):
    self.name = name
    self.raw = name.strip().lower()
    self.quantity = quantity

class Container(object):
  def __init__(self, name):
    self.name = name
    self.inside = {}

  def __iter__(self):
    return iter(self.inside.items())

  def __len__(self):
    return len(self.inside)

  def __contains__(self, item):
    return item.raw in self.inside

  def __getitem__(self, item):
    return self.inside[item.raw]

  def __setitem__(self, item, value):
    self.inside[item.raw] = value
    return self[item]

  def add(self, item, quantity=1):
    if quantity < 0:
        print "ERROR."
    if item in self:
        self[item].quantity += quantity
    else:
        self[item] = item           

inventory = Container("Inventory")

spare_key = Item("SPARE KEY", 1)
rock = Item("ROCK", 1)

print(spare_key in inventory)

一种打印Container类实例的内容的简单方法:

print "Inventory: [" + ",".join((item[1].name for item in inventory)) + "]"

考虑更改此功能:

def __iter__(self):
    return iter(self.inside.items())

对此:

def __iter__(self):
    return iter(self.inside.values())

通常,您会期望遍历库存仅产生项目,而不产生带有项目名称和项目的元组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM