2010-03-23 125 views
4

我正在尝试创建一个可以从其库存中添加和删除项目的玩家。我有一切工作,我只有一个小问题。每次打印库存时,都会显示“无”。我一直在试图去除它,但无论我做什么,都会在程序中出现“无”!我知道我只是想念一件简单的事情,但我无法想象出我的一生。添加/删除列表中的项目

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

您可以发布您的输入和输出的样本? – 2010-03-23 01:25:05

回答

4

问题是这样的语句:

print "Inventory:", player.inventory() 

你告诉Python来打印()从player.inventory返回的值。但是你的inventory()方法只是打印库存,它不会返回任何东西 - 所以返回值隐式为None。

你可能想明确地选择使用此:

print "Inventory:" 
player.print_inventory() 

或者你也可以有它返回一个字符串,并做到这一点:

print "Inventory:", player.inventory_as_str() 
+0

谢谢!我知道这很简单。我所要做的就是删除那个逗号,哈哈。 – Jam

0

你不介意更换功能:

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

与此:

def inventory(self): 
    print self.items 

,然后调用:

print "Inventory" 
player.inventory() 

或者你可以有以下功能:

def print_inventory(self): 
    print "Inventory:" 
    for item in self.items: 
     print item