I'm working with an online class and can't seem to diagnose this bug. In the code below, if the player initially responds no to the prompt in draw_one_more() the correct value is returned. If the player takes one or more cards and eventually indicates no prior to busting, the value None is returned. I added a print statement directly before the return, and print statement shows the correctly populated value, but the value received from the function is None.
UPDATES I got a bit carried away after working with some recursive examples. As many suggested the problem doesn't require recursion, and TBF is probably a bad use case. I added some more code as requested.
def draw_card(hand, card_deck, todraw=1):
for i in range(todraw):
hand.append(card_deck[random.choice(card_deck)])
return hand
player_hand = draw_card(hand=player_hand,
card_deck = card_deck,
todraw=2)
#3D - establish player draw loop
def draw_one_more(ahand):
#print(player_hand)
print(f"line 125 {ahand}")
draw_another = input("Type 'y' to get another card, type 'n' to pass: ")
print("Line 128 Draw another: " + draw_another)
if draw_another != 'y':
print(f"line 129 inside NO returning {ahand}")
return ahand
else:
ahand = draw_card(hand=ahand,
card_deck = card_deck,
todraw=1)
ascore = add_cards(ahand)
#exit 2 - bust
if ascore > 21:
print(f"\tYour cards: {ahand}, current score: {ascore}: PLAYER BUSTS")
print(f"\tComputer's first card: {computer_hand[0]}")
return ahand
#continue recursively
print(f"\tYour cards: {ahand}, current score: {ascore}")
print(f"\tComputer's first card: {computer_hand[0]}")
draw_one_more(ahand)
#4 - computer run loop
#first run player execution
player_hand = draw_one_more(player_hand)
print(f"line 148 player hand {player_hand}")
player_score = add_cards(player_hand)
ascore > 21return draw_one_more(ahand)player_handfunction? please share it.