python中的递归,不覆盖已更改的变量
我正在尝试编写一个函数,该函数执行以下操作: 如果玩家手牌没有任何小于或等于魔法库的数字,则该函数不应执行任何操作 如果玩家手牌的数字小于或等于魔法银行,则该功能应提示用户选择哪个数字 如果用户选择的数字小于mana_bank,则应返回包含该数字的列表。如果数字大于法力库,则应再次调用该函数,直到他提示一个小于或等于法力库的数字 每当我运行该函数时,用户首先提示一个高于mana_bank的数字,该函数就会从自身内部调用,然后即使用户提示一个低于或等于mana_bank的数字,该函数也会返回None而不是列表中的数字 我还尝试将变量player\u choice设置为全局变量,但仍然不起作用 希望您能给予指导python中的递归,不覆盖已更改的变量,python,recursion,Python,Recursion,我正在尝试编写一个函数,该函数执行以下操作: 如果玩家手牌没有任何小于或等于魔法库的数字,则该函数不应执行任何操作 如果玩家手牌的数字小于或等于魔法银行,则该功能应提示用户选择哪个数字 如果用户选择的数字小于mana_bank,则应返回包含该数字的列表。如果数字大于法力库,则应再次调用该函数,直到他提示一个小于或等于法力库的数字 每当我运行该函数时,用户首先提示一个高于mana_bank的数字,该函数就会从自身内部调用,然后即使用户提示一个低于或等于mana_bank的数字,该函数也会返回Non
def pick_card():
player_choice_str = 0
player_choice = []
for i in player_hand:
if i <= mana_bank:
print(player_hand, mana_bank, "Mana available type the name of the card you wish to play ... ")
player_choice_str = input()
break
if not i <= mana_bank:
return "You don't have enough mana to play a card."
if int(player_choice_str) > mana_bank:
print("That card costs " + str(player_choice_str) + " and you only have " + str(mana_bank) + " this round.")
pick_card()
if int(player_choice_str) <= mana_bank:
player_choice.append(player_choice_str)
return player_choice
player_hand = [4, 8, 8]
mana_bank = 4
print(pick_card())
def拾取卡():
玩家\u选择\u str=0
玩家选择=[]
对于玩家手中的i:
如果我你的第一个问题是player\u choice
是本地定义的。它将在每次函数调用中被覆盖。此外,如果玩家的选择大于manabank,则必须计算/返回pick_card()的返回值。否则,由于缺少返回值,递归的第一个调用函数将返回None
。您的第一个问题是player\u choice
是本地定义的。它将在每次函数调用中被覆盖。此外,如果玩家的选择大于manabank,则必须计算/返回pick_card()的返回值。否则,由于缺少返回值,递归的第一个调用函数将返回None
。在for循环中,您有两个条件-如果我在for循环中,您有两个条件-如果我只是为了您的信息,如果给出的数字超过mana_bank
的次数太多,用户可能会使用递归错误使程序崩溃。有关正确处理用户输入的信息,请参阅。如果玩家有多张卡仅用于提供您的信息,则如果给出的数字超过mana_bank
的次数太多,则用户可能会使用递归错误使您的程序崩溃。有关正确处理用户输入的信息,请参阅。如果玩家有多张卡
for i in player_hand:
if i <= mana_bank:
print(player_hand, mana_bank, "Mana available type the name of the card you wish to play ... ")
player_choice_str = input()
break
if player_choice_str is 0: # no card selected at the end of the loop
return "You don't have enough mana to play a card."