我正在尝试创建一个可以在其库存中添加和删除项目的玩家。我一切正常,我只有 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/