好的,所以我应该创建一个向导库存程序,列出向导当前对他的项目。最多,他可以容纳4个项目,并从3开始。我的功能似乎是问题,但我不确定我在本书中做错了什么。
我的节目功能就像一个魅力...我的编辑不是编辑......是的。我会发布这个帖子,希望你们能让我知道我做错了什么。在此先感谢您的所有帮助。 (不,我不是要求任何人做我的作业......但也许只是指出我正确的方向)
print ("The Wizard Inventory program")
inventory = ["orb", "staff", "spellbook"]
def opening_menu():
print("Command Menu")
print("show - Show all items")
print("grab - Grab an item")
print("edit - Edit an item")
print("drop - Drop an item")
print("exit - Exit program")
print()
def show_it():
inventory = ["orb", "staff", "spellbook"]
for item in inventory:
print(item)
def grab_it():
print("which item would you like to add??" )
if (item -1) in range (master_inventory_list):
while yes:
grab_it (inventory, " ")
def edit_it():
inventory = ["orb", "staff", "spellbook", "hat", "potion", "robe"]
item = input("What item are you looking for? ")
if item in inventory:
inventory.remove(item)
def drop_it():
inventory = ["orb", "staff", "spellbook", "hat", "potion", "robe"]
item = input("What item would you like to drop? ")
for item in inventory:
inventory.pop()
def exit_it():
choice = y
while choice.lower() == "y":
print("Do you want to stay inside your inventory? (y/n): ")
print()
print("Goodbye!!")
def master_inventory_list():
master_inventory_list = ["orb", "staff", "spellbook", "hat", "potion", "robe"]
opening_menu()
while True:
command = input("Command: ")
if command.lower() == "show":
show_it()
elif command.lower() == "grab":
grab_it()
elif command.lower() == "edit":
edit_it()
elif command.lower() == "drop":
drop_it()
elif command.lower() == "exit":
break
else:
print("Not a valid choice! Please choose again. \n")
print("Goodbye!")
if __name__ == "__main__":
main()
答案 0 :(得分:0)
你说家庭作业,所以我假设你在过去一个月左右开始学习。
只是看一眼,也许是因为缺乏退货声明/全球库存/无论什么反映了您的库存变化?
def edit_it(): 库存= [" orb","员工"," spellbook","帽子","药水",&# 34;长袍"] item = input("你在寻找什么项目?") 如果库存中的项目: inventory.remove(项目)
在函数(如edit_it)中,所有变量都是函数的参数,在函数内创建的,或全局变量。如果您希望库存反映您的更改,则需要在return语句中输出它。退货声明会为您提供清单/清单,但您可以自行查看清单。您可以将返回列表的值分配给另一个变量。
但是,因为您在函数内定义库存,所以每次调用该函数时,您都会执行此声明/赋值:
inventory = [" orb"," staff"," spellbook"," hat"," potion" ,"长袍"]
实际上,你永远不会超过5个项目。因此,除了返回函数之外,您可能希望每次要编辑时将库存作为参数传递给edit_it函数。举个例子:
def example(inventory, itemToRemove):
inventory.remove(itemToRemove)
return inventory
newThing = example(oldThing, theUserInput)
newerThing = example(newThing, theNewUserInput)
(顺便说一下,这些是糟糕的功能名称,但我认为它给出了我所掌握的一般结构的一个很好的总结。关于效率和清晰度的话题有些说法,但是meh 。)
另外,如果你不介意我问,为什么你有master_inventory_list()?如果它意味着您可以在整个程序中使用的价值,那么就有更好的方式(而且实际上并不是如何使用这些功能)。