Home > OS >  Pythonic way to write a Poker function to prescribe dealer and blinds based on winner
Pythonic way to write a Poker function to prescribe dealer and blinds based on winner

Time:02-21

I'm coding a Poker project and have just written a function to rescribe dealer, small and big blinds based on winner (pre-game). The code works, but it doesn't look pythonic:

players = {1:'Jose',2:'Sam',3:'John',4:'Victor'}
## Each player receives a card, John gets an Ace and wins the dealer spot
winner = 'John'

for num in players:
    if players[num] == winner:
        dealer = num
        
        if len(players) == 2:
            if num 1 <= len(players):
                small_blind = num 1
            else:
                small_blind = 1
                
        elif len(players) >= 3:
            if num 1 <=len(players):
                small_blind = num 1
                if num 2 <= len(players):
                    big_blind = num 2
                else:
                    big_blind = 1
            else:
                small_blind = 1
                big_blind = 2

print(f'{players[dealer]} will be dealing cards')
print(f'{players[small_blind]} will be small blind')
print(f'{players[big_blind]} will be big blind')

What is the most efficient way to loop through the entire list starting at a specified index?

CodePudding user response:

You could go directly with indices (mod length of list):

players = ['Jose', 'Sam', 'John', 'Victor']
winner = 'John'

dealer = players.index(winner)
small_blind = (dealer 1)%len(players)
big_blind   = (dealer 2)%len(players)
  • Related