2 回答

TA貢獻1840條經驗 獲得超5個贊
您的第一個問題是player_choice
在本地定義的。它將在每次函數調用中被覆蓋。此外,在玩家選擇大于 manabank 的情況下,您必須評估/返回 pick_card() 的返回值。否則遞歸的第一個調用函數將None
由于缺少返回值而返回。

TA貢獻1779條經驗 獲得超6個贊
在您的 for 循環中,您有兩個條件 -if i <= mana_bank:并且if not i <= mana_bank:對于任何給定的條件i之一都是如此。
因此,您的循環會在遇到大于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."
此外,您可能希望在此行之后驗證用戶輸入,player_choice_str = input()以檢查他們輸入了有效的卡。
添加回答
舉報