Как добавить входные данные в пустой список и сохранить его в памяти? - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь составить список предметов в игре, и мне приходится вызывать его несколько раз в моей программе.Я заметил, что входы не сохраняются в моем списке, а просто заменяют его каждый раз.

Я использовал playeritems.append() и playeritems.extend(), но он не работает.

def addbackpack():
    global playeritems
    gameitems= ["sword", "potion"]
    playeritems = []
    print ("\nWhat would you like to add to your backpack? The sword or potion?\n")
    p1_additem = str(input())
    if p1_additem in gameitems:
        playeritems.append(p1_additem)
        print ("\nYou added",p1_additem,"to your backpack.\n")
    else:
        print ("\nThat is not a choice!\n")
        return addbackpack()

addbackpack()
print (playeritems)
addbackpack()
print (playeritems)

Это мой точный результат после ввода первого меча и второго зелья:

What would you like to add to your backpack? The sword or potion?

sword

You added sword to your backpack

['sword']

What would you like to add to your backpack? The sword or potion?

potion

You added potion to your backpack

['potion'] 

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Это работает (в том смысле, что каждый новый элемент добавляется), но каждый вызов addbackpack повторно инициализирует playeritems, стирая все, что было там раньше.

0 голосов
/ 29 января 2019
def addbackpack(playeritems):
    gameitems= ["sword", "potion"]
    print ("\nWhat would you like to add to your backpack? The sword or potion?\n")
    p1_additem = str(input())
    if p1_additem in gameitems:
        playeritems.append(p1_additem)
        print ("\nYou added",p1_additem,"to your backpack.\n")
    else:
        print ("\nThat is not a choice!\n")
        return addbackpack(playeritems)
playeritems = []
addbackpack(playeritems)
print (playeritems)
addbackpack(playeritems)
print (playeritems)
  • Вы переинициализировали элементы плеера каждый раз, когда выполняли вызов функции.Вместо этого просто передайте список вызову функции.

PS: я предлагаю не использовать рекурсию.Вместо этого вы можете сделать это итеративным способом.

def addbackpack():
    gameitems= ["sword", "potion"]
    print ("\nWhat would you like to add to your backpack? The sword or potion?\n")
    p1_additem = str(input())
    # read until player input correct item.
    while p1_additem not in gameitems:
      print ("\nThat is not a choice!\n")
      p1_additem = str(input())
    playeritems.append(p1_additem)
    print ("\nYou added",p1_additem,"to your backpack.\n")

playeritems = []
addbackpack()
print (playeritems)
addbackpack()
print (playeritems)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...