Skip to main content

PyPI version fury.io PyPi downloads Maintenance

Blackjack

py21 is a blackjack simulator. Users can run the simulation using the default rules or specify their own. Additionally, users can test their own playing and betting strategies.

Installation

Right now py21 can be installed from source or PyPI.

To download from source, clone or download this repository, then navigate to the directory you cloned to and run pip install -e ..

To download from PyPI, use pip install py21

Using py21

To run the simulator, the user must initiate one instance of the Game class and at least one instance of the Player class.

The Player class requires one input, bankroll, and has three optional inputs: strategy_func, wager_func, and insurance_func.

bankroll should be an numerical value indicating the bankroll the player will be starting with.

strategy_func should be a function that will return what action the player will take in a given situation. This function can take as inputs a number of variables containing information about the game such as the player's hand, dealer's up card, and the count. It must return one of the following: HIT, STAND, SPLIT, DOUBLE.

wager_func should be a function that will determine how much the player will wager in a hand. Like the function used for strategy_func it can take as arguments variables on the status of the game. It must return a number that is within the minimum and maximum bets allowed, and no more than the player's bankroll.

insurance_func should be a function that will determine if a player takes insurance when the dealer is showing an ace. It must return True or False.

The Game class has one required argument and two optional ones. players is a list of instances of the Players class that will be used in the game. rules can be a dictionary containing changes to the game's default rules to run the simulation under different scenarios. An explanation of how the dictionary should be structured is below. Finally, verbose is a boolean indicator for whether or not you want information printed out as the game is played.

Running a simulation can be done in a few lines of code:

from py21 import Game, Player

# initiate Player object
player = Player(100)
# initiate Game object
game = Game([player])

# run simulation 1,000,000 times
game.simulate(1000000)

Updating Game Parameters

To update a rule in the game, use this dictionary format:

{param: new_rule}

For example, here is how to change the blackjack payout from 3:2 to 6:5:

from py21 import Game, Player

rules = {"blackjack_payout": 1.2}

player = Player(100)
game = Game([player], rules)

game.simulate(1000000)

A list of the game parameters you can update can be found here.

As of version 1.6.0, there is also a CLI for py21. To use it, run blackjack from the command line.

Metadata

Release files for py21 1.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py21 1.6.0
File Size Uploaded
py21-1.6.0.tar.gz 20.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for py21 1.6.0
File Interpreter ABI Platform
py21-1.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 43.7 kB

Release files / py21-1.6.0.tar.gz

Download URL py21-1.6.0.tar.gz
Size 20.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2a4a0811af4c990bacade2e800e3551c64d153fff35603e71ec9a9bf48b2f4a1
BLAKE2b-256 checksum
How to use checksums
fbf019a4d3f3e37a17d337e23df579abdeb6c7d237acc7ff226a88f602f30876
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

Release files / py21-1.6.0-py3-none-any.whl

Download URL py21-1.6.0-py3-none-any.whl
Size 22.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
83edea0a5275e087efb8ec0976cb7ea629e42eba5cb57aa53fc2e0acb4b4eb54
BLAKE2b-256 checksum
How to use checksums
9afa20b30c63c71abb0da5e5cbd3bf1588815a9c0117b9271d529c399850c11b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

Release history Release notifications | RSS feed

This release

1.6.0 This release

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page