python 3列表作业让我难过

时间:2017-03-01 03:36:14

标签: list function python-3.x

好的,所以我应该创建一个向导库存程序,列出向导当前对他的项目。最多,他可以容纳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()

1 个答案:

答案 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()?如果它意味着您可以在整个程序中使用的价值,那么就有更好的方式(而且实际上并不是如何使用这些功能)。