Мастер инвентаризации: перепутать с инвентаризацией и как изменить значения с помощью кода, который у меня есть - PullRequest
0 голосов
/ 26 февраля 2020

Я делаю def displaytitle (), displayMenu (), show () (я верю) и правильно покидаю часть, однако я не понимаю, что я делал неправильно в def drop_item (), edit_item ( ) и grab_item (). Я также не понимаю, как изменить список инвентаря, так как большая часть моего кода не меняет список и то, что я написал до инициации кода. Я действительно потерян и хотел бы получить руководство здесь. Спасибо!

Инструкции программы и как она должна выглядеть

def displayTitle():
    print("The Wizard Inventory Program")
def displayMenu():
    print("show - Show all items")
    print("grab - Grab an item")
    print("edit - Edit an item")
    print("drop - Drop an item")
    print("exit - Exit Program")
def show(inventory):
    inventory = ["Wooden Staff", "Wizard Hat", "Cloth Shoes"]
for item in inventory:
    print(item)
def grab_item(inventory):
    item = input("Name: ")
    if inventory < 4:
       print(item + " was added.")
       inventory.append(item)
    else:
       print("Error. Too many")
def edit_item(inventory):
    num = input("Number: ")
    if num == 1:
       print(inventory[0])
       Unum = input("Updated name:")
       print("Item number " + num + " was updated")
       inventory[0] = Unum 
    elif num == 2:
       print(inventory[1])
       Unum = input("Updated name:")
       print("Item number " + num + " was updated")
       inventory[1] = Unum
    elif num == 3:
       print(inventory[2])
       Unum = input("Updated name:")
       print("Item number " + num + " was updated")
       inventory[2] = Unum
    elif num == 4:
       print(inventory[3])
       Unum = input("Updated name:")
       print("Item number " + num + " was updated")
       inventory[3] = Unum
    else:
       print("Invalid Number")
def drop_item(inventory):
    D_item = input("Number: ")
    if D_item == "1":
       inventory.remove("Wooden Staff")
       print("Wooden Staff was dropped")
    elif D_item == "2":
       inventory.remove("Wizard Hat")
       print ("Wizard Hat was dropped")
    elif D_item == "3":
       inventory.remove("Cloth Shoes")
       print("Cloth Shoes was dropped")
    else:
       print("Error!")
def main():
    inventory = ["Wooden Staff", "Wizard Hat", "Cloth Shoes"]
    displayTitle()
    displayMenu()
    while True:
       Com = input("Command: ")
       if Com == "show":
          show(inventory)
       elif Com == "grab":
          grab_item(inventory)
       elif Com == "edit":
          edit_item(inventory)
       elif Com == "drop":
          drop_item(inventory)
       elif Com == "exit":
          break
       else:
          print("Please input a valid Response")

    if __name__ == "__main__":
    main()

1 Ответ

1 голос
/ 26 февраля 2020

Есть несколько вопросов.

(1) inventory переназначается при каждом вызове на show(). Следует просто напечатать содержимое переданного в него аргумента inventory.

(2) Оператор if в grab_item() пытается сравнить объект списка с типом int. Вместо этого должно быть if len(inventory) < 4 для сравнения с длиной списка.

(3) В edit_item() вход, присвоенный num, должен быть приведен к int, чтобы его можно было использовать для индексации inventory. Затем вы можете значительно упростить код и поймать неправильные числа с помощью try / кроме.

(4) В drop_item(), такой же случай, как (3), но для переменной D_item.

Вот отредактированный код:

def displayTitle():
    print("The Wizard Inventory Program")

def displayMenu():
    print("show - Show all items")
    print("grab - Grab an item")
    print("edit - Edit an item")
    print("drop - Drop an item")
    print("exit - Exit Program")

def show(inventory):
    for item in inventory:
        print(item)

def grab_item(inventory):
    item = input("Name: ")
    if len(inventory) < 4:
       print(item + " was added.")
       inventory.append(item)
    else:
       print("Error. Too many")

def edit_item(inventory):
    num = int(input("Number: "))
    try:
        print(inventory[num - 1])
        Unum = input("Updated name:")
        print("Item number " + str(num) + " was updated")
        inventory[num - 1] = Unum
    except IndexError:
       print("Invalid Number")

def drop_item(inventory):
    D_item = int(input("Number: "))
    try:
        print(inventory[D_item - 1] + ' was dropped')
        del inventory[D_item - 1]
    except IndexError:
       print("Error!")

def main():
    inventory = ["Wooden Staff", "Wizard Hat", "Cloth Shoes"]
    displayTitle()
    displayMenu()
    while True:
       Com = input("Command: ")
       if Com == "show":
          show(inventory)
       elif Com == "grab":
          grab_item(inventory)
       elif Com == "edit":
          edit_item(inventory)
       elif Com == "drop":
          drop_item(inventory)
       elif Com == "exit":
          break
       else:
          print("Please input a valid Response")

if __name__ == "__main__":
    main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...