<pre><code>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)
</code></pre>
<ul>
<li>每次进行函数调用时都要重新初始化playeritems。相反,只需将一个列表传递给函数调用。你知道吗</li>
</ul>
<p>PS:我建议不要使用递归。相反,你可以这样迭代。你知道吗</p>
<pre><code>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)
</code></pre>