Member 13870198 Ответов: 1

Как сделать так, чтобы функция deal_card(x) изменила значение x?


Вот первая часть моего кода для симулятора блэкджека, который я делаю. Предполагается, что в программе будет один игрок, играющий с базовой стратегией против дилера. Все работало нормально, пока я не добавил часть "если" функции deal_card(x).

Итак, если я запускаю deal_card(phand), то к набору phand будет добавлена карта. Однако часть оператора if вообще не повлияет на phand. Я пытаюсь понять, как первая часть функции deal_card(x) повлияет на то, что такое x, но последняя часть (if) не меняет его.

number_of_decks = 6
standard_deck = sorted(4*[2,3,4,5,6,7,8,9,10,10,10,10,11])
shoe = sorted(number_of_decks*standard_deck)
removed=[]
results=[]
from random import randint
dhand=[]
phand=[]
def deal_card(x):
    card=shoe[randint(0,4*13*6-1-len(removed))]
    shoe.remove(card)
    removed.append(card)
    x.append(card)
    if sum(x)>21 and sorted(x)[len(x)-1]==11:
        x=sorted(x)
        x[len(x)-1]=1
        return x


Это так расстраивает, что я теряю рассудок. Так что я был бы очень благодарен за любую помощь.

Спасибо.

Что я уже пробовал:

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

1 Ответов

Рейтинг:
1

User 7429338

Истинная причина, по которой это происходит, хорошо объяснена в этом блоге[^], в разделах "имена и значения" и "присвоение".

Решение вашей непосредственной проблемы состоит в том, чтобы заменить ваш звонок, например, из

deal_card(mydeck)
к
mydeck = deal_card(mydeck)