update megamillions to new game structure. update requirements. add lotto texas. add two step. add high number formatting with commas.
This commit is contained in:
parent
3fa9a44265
commit
3a666c5bcc
|
|
@ -43,6 +43,9 @@ class Ticket:
|
||||||
if self.special_ball is not None and self.my_special_ball == self.special_ball:
|
if self.special_ball is not None and self.my_special_ball == self.special_ball:
|
||||||
self.matched_special_ball = True
|
self.matched_special_ball = True
|
||||||
|
|
||||||
|
if self.my_special_ball is True and self.special_ball_name == 'Extra':
|
||||||
|
self.matched_special_ball = True
|
||||||
|
|
||||||
def process_winnings(self, special_ball_wins, non_special_ball_wins):
|
def process_winnings(self, special_ball_wins, non_special_ball_wins):
|
||||||
wins = non_special_ball_wins
|
wins = non_special_ball_wins
|
||||||
|
|
||||||
|
|
@ -67,7 +70,7 @@ class Ticket:
|
||||||
f'{"True" if self.matched_special_ball else "False"}'
|
f'{"True" if self.matched_special_ball else "False"}'
|
||||||
)
|
)
|
||||||
if self.winnings > 0:
|
if self.winnings > 0:
|
||||||
print(f'Ticket is worth: {self.winnings}')
|
print(f'Ticket is worth: {self.winnings:,.2f}')
|
||||||
else:
|
else:
|
||||||
print(f'Not a Winner!')
|
print(f'Not a Winner!')
|
||||||
print()
|
print()
|
||||||
|
|
|
||||||
31
lottotexas/Feed.py
Normal file
31
lottotexas/Feed.py
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
import feedparser
|
||||||
|
|
||||||
|
|
||||||
|
class Feed:
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.feed = 'https://www.texaslottery.com/export/sites/lottery/rss/tlc_latest.xml'
|
||||||
|
self.parsed_feed = feedparser.parse(self.feed)
|
||||||
|
|
||||||
|
self.modifiers = {
|
||||||
|
'Billion': 1000000000,
|
||||||
|
'Million': 1000000
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_winning_numbers(self):
|
||||||
|
nums_pre = self.parsed_feed.entries[4].summary
|
||||||
|
nums = nums_pre.split(' - ')
|
||||||
|
|
||||||
|
winning_numbers = nums
|
||||||
|
|
||||||
|
for idx, num in enumerate(nums):
|
||||||
|
winning_numbers[idx] = int(num)
|
||||||
|
|
||||||
|
return {'numbers': winning_numbers, 'special_ball': None, 'multiplier': 1}
|
||||||
|
|
||||||
|
def get_jackpot(self):
|
||||||
|
jp_pre = self.parsed_feed.entries[5].summary
|
||||||
|
jp_pre = jp_pre[jp_pre.index('Cash'):]
|
||||||
|
jp_pre = jp_pre[jp_pre.index(':') + 3:]
|
||||||
|
jp_data = jp_pre.split()
|
||||||
|
return float(jp_data[0]) * self.modifiers[jp_data[1]]
|
||||||
24
lottotexas/LottoTexas.py
Normal file
24
lottotexas/LottoTexas.py
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
from lib.Ticket import Ticket
|
||||||
|
from .Feed import Feed
|
||||||
|
from .winning_structure import get_winnings_extra, get_winnings_no_extra
|
||||||
|
|
||||||
|
|
||||||
|
class LottoTexas(Ticket):
|
||||||
|
|
||||||
|
def __init__(self, my_picks, my_special_ball, mult):
|
||||||
|
super().__init__(my_picks, my_special_ball)
|
||||||
|
self.special_ball_name = 'Extra'
|
||||||
|
self.feed = Feed()
|
||||||
|
self.get_winning_numbers()
|
||||||
|
self.multiplier = mult
|
||||||
|
|
||||||
|
def get_winnings_with_special_ball(self, jp):
|
||||||
|
return get_winnings_extra(self.jackpot)
|
||||||
|
|
||||||
|
def get_winnings_without_special_ball(self):
|
||||||
|
return get_winnings_no_extra(self.jackpot)
|
||||||
|
|
||||||
|
def get_winning_numbers(self):
|
||||||
|
winners = self.feed.get_winning_numbers()
|
||||||
|
self.winning_numbers = winners['numbers']
|
||||||
|
self.special_ball = winners['special_ball']
|
||||||
0
lottotexas/__init__.py
Normal file
0
lottotexas/__init__.py
Normal file
23
lottotexas/game.py
Normal file
23
lottotexas/game.py
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
#! /usr/bin/python3
|
||||||
|
|
||||||
|
from .picks import my_picks
|
||||||
|
from .LottoTexas import LottoTexas
|
||||||
|
|
||||||
|
cur_picks = []
|
||||||
|
cur_pb = 0
|
||||||
|
winnings = {}
|
||||||
|
|
||||||
|
for idx, tkt in enumerate(my_picks):
|
||||||
|
cur_picks = tkt['picks']
|
||||||
|
cur_extra = tkt['extra']
|
||||||
|
tktnum = tkt['ticket']
|
||||||
|
pbtkt = LottoTexas(cur_picks, cur_extra, 1)
|
||||||
|
pbtkt.process_ticket()
|
||||||
|
key = 'Ticket ' + str(tktnum)
|
||||||
|
if key not in winnings.keys():
|
||||||
|
winnings[key] = 0
|
||||||
|
winnings[key] += pbtkt.get_ticket_winnings()
|
||||||
|
for key in winnings.keys():
|
||||||
|
winnings[key] = f'{winnings[key]:,.2f}'
|
||||||
|
|
||||||
|
print("Total Winnings:", winnings)
|
||||||
4
lottotexas/picks.py
Normal file
4
lottotexas/picks.py
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
my_picks = [
|
||||||
|
# quick picks #
|
||||||
|
{'picks': (8,13,14,27,28,43), 'extra': None, 'mult': 1, 'ticket': 1},
|
||||||
|
]
|
||||||
10
lottotexas/winning_structure.py
Normal file
10
lottotexas/winning_structure.py
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
def get_winnings_extra(jackpot_cash):
|
||||||
|
return {
|
||||||
|
1: [0,0,2,13,150,12_000,jackpot_cash]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_winnings_no_extra(jackpot_cash):
|
||||||
|
return {
|
||||||
|
1: [0,0,0,3,50,2_000,jackpot_cash]
|
||||||
|
}
|
||||||
|
|
@ -14,7 +14,7 @@ class Feed:
|
||||||
|
|
||||||
def get_winning_numbers(self):
|
def get_winning_numbers(self):
|
||||||
nums_pre = self.parsed_feed.entries[2].summary
|
nums_pre = self.parsed_feed.entries[2].summary
|
||||||
nums_pre = nums_pre.replace('MegaBall', '-').replace(' Megaplier', '-')
|
nums_pre = nums_pre.replace('MegaBall', '-').replace(' Megaplier', '')
|
||||||
nums = nums_pre.split(' - ')
|
nums = nums_pre.split(' - ')
|
||||||
|
|
||||||
winning_numbers = nums[:5]
|
winning_numbers = nums[:5]
|
||||||
|
|
@ -23,8 +23,7 @@ class Feed:
|
||||||
winning_numbers[idx] = int(num)
|
winning_numbers[idx] = int(num)
|
||||||
|
|
||||||
special_ball = int(nums[5])
|
special_ball = int(nums[5])
|
||||||
multiplier = int(nums[6])
|
return {'numbers': winning_numbers, 'special_ball': special_ball, 'multiplier': 0}
|
||||||
return {'numbers': winning_numbers, 'special_ball': special_ball, 'multiplier': multiplier}
|
|
||||||
|
|
||||||
def get_jackpot(self):
|
def get_jackpot(self):
|
||||||
jp_pre = self.parsed_feed.entries[3].summary
|
jp_pre = self.parsed_feed.entries[3].summary
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,12 @@ from .winning_structure import get_winnings_mb, get_winnings_no_mb
|
||||||
|
|
||||||
class MegaMillions(Ticket):
|
class MegaMillions(Ticket):
|
||||||
|
|
||||||
def __init__(self, my_picks, my_special_ball):
|
def __init__(self, my_picks, my_special_ball, mult):
|
||||||
super().__init__(my_picks, my_special_ball)
|
super().__init__(my_picks, my_special_ball)
|
||||||
self.special_ball_name = 'MegaBall'
|
self.special_ball_name = 'MegaBall'
|
||||||
self.feed = Feed()
|
self.feed = Feed()
|
||||||
self.get_winning_numbers()
|
self.get_winning_numbers()
|
||||||
|
self.multiplier = mult
|
||||||
|
|
||||||
def get_winnings_with_special_ball(self, jp):
|
def get_winnings_with_special_ball(self, jp):
|
||||||
return get_winnings_mb(self.jackpot)
|
return get_winnings_mb(self.jackpot)
|
||||||
|
|
@ -21,4 +22,3 @@ class MegaMillions(Ticket):
|
||||||
winners = self.feed.get_winning_numbers()
|
winners = self.feed.get_winning_numbers()
|
||||||
self.winning_numbers = winners['numbers']
|
self.winning_numbers = winners['numbers']
|
||||||
self.special_ball = winners['special_ball']
|
self.special_ball = winners['special_ball']
|
||||||
self.multiplier = self.my_picks['mult']
|
|
||||||
|
|
@ -11,7 +11,8 @@ for idx, tkt in enumerate(my_picks):
|
||||||
cur_picks = tkt['picks']
|
cur_picks = tkt['picks']
|
||||||
cur_pb = tkt['mb']
|
cur_pb = tkt['mb']
|
||||||
tktnum = tkt['ticket']
|
tktnum = tkt['ticket']
|
||||||
pbtkt = MegaMillions(cur_picks, cur_pb)
|
mult = tkt['mult']
|
||||||
|
pbtkt = MegaMillions(cur_picks, cur_pb, mult)
|
||||||
pbtkt.process_ticket()
|
pbtkt.process_ticket()
|
||||||
key = 'Ticket ' + str(tktnum)
|
key = 'Ticket ' + str(tktnum)
|
||||||
if key not in winnings.keys():
|
if key not in winnings.keys():
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
my_picks = [
|
my_picks = [
|
||||||
# {'picks': (9, 11, 42, 53, 69), 'mb': 22, 'ticket': 1},
|
{'picks': (9, 11, 42, 53, 69), 'mb': 22, 'mult':10, 'ticket': 1},
|
||||||
# {'picks': (6, 11, 24, 42, 69), 'mb': 17, 'ticket': 1},
|
{'picks': (6, 11, 24, 42, 69), 'mb': 17, 'mult':2, 'ticket': 1},
|
||||||
# {'picks': (2, 20, 24, 43, 48), 'mb': 13, 'ticket': 1},
|
{'picks': (2, 20, 24, 43, 48), 'mb': 13, 'mult':3, 'ticket': 1},
|
||||||
# {'picks': (3, 7, 20, 47, 68), 'mb': 13, 'ticket': 1},
|
{'picks': (3, 7, 20, 47, 68), 'mb': 13, 'mult':2, 'ticket': 1},
|
||||||
# {'picks': (5, 9, 13, 18, 25), 'mb': 9, 'ticket': 1},
|
{'picks': (5, 9, 13, 18, 25), 'mb': 9, 'mult':3, 'ticket': 1},
|
||||||
|
|
||||||
# quick picks #
|
# quick picks #
|
||||||
{'picks': (9,18,22,52,53), 'mb': 4, 'mult': 3, 'ticket': 2},
|
|
||||||
|
|
||||||
{'picks': (1,5,21,36,60), 'mb': 24, 'mult': 3, 'ticket': 3},
|
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,9 @@ my_picks = [
|
||||||
{'picks': (5,9,13,18,25), 'pb': 9, 'ticket': 1},
|
{'picks': (5,9,13,18,25), 'pb': 9, 'ticket': 1},
|
||||||
|
|
||||||
# quick picks #
|
# quick picks #
|
||||||
{'picks': (32,33,54,60,63), 'pb': 1, 'ticket': 2},
|
# {'picks': (10,51,63,64,65), 'pb': 10, 'ticket': 2},
|
||||||
{'picks': (3,41,48,64,66), 'pb': 14, 'ticket': 2},
|
# {'picks': (2,3,24,47,56), 'pb': 9, 'ticket': 2},
|
||||||
{'picks': (2,4,24,41,54), 'pb': 19, 'ticket': 2},
|
# {'picks': (1,9,40,49,54), 'pb': 14, 'ticket': 2},
|
||||||
{'picks': (14,24,35,41,52), 'pb': 18, 'ticket': 2},
|
# {'picks': (29,31,35,43,46), 'pb': 22, 'ticket': 2},
|
||||||
{'picks': (11,31,61,65,68), 'pb': 14, 'ticket': 2},
|
# {'picks': (31,33,58,63,69), 'pb': 23, 'ticket': 2},
|
||||||
]
|
]
|
||||||
|
|
|
||||||
26
twostep/Feed.py
Normal file
26
twostep/Feed.py
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
import feedparser
|
||||||
|
|
||||||
|
|
||||||
|
class Feed:
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.feed = 'https://www.texaslottery.com/export/sites/lottery/rss/tlc_latest.xml'
|
||||||
|
self.parsed_feed = feedparser.parse(self.feed)
|
||||||
|
|
||||||
|
def get_winning_numbers(self):
|
||||||
|
nums_pre = self.parsed_feed.entries[6].summary
|
||||||
|
nums_pre = nums_pre.replace('Bonus Ball', '-')
|
||||||
|
nums = nums_pre.split(' - ')
|
||||||
|
|
||||||
|
winning_numbers = nums[:4]
|
||||||
|
|
||||||
|
for idx, num in enumerate(nums[:4]):
|
||||||
|
winning_numbers[idx] = int(num)
|
||||||
|
|
||||||
|
special_ball = int(nums[4])
|
||||||
|
return {'numbers': winning_numbers, 'special_ball': special_ball, 'multiplier': 1}
|
||||||
|
|
||||||
|
def get_jackpot(self):
|
||||||
|
jp_pre = self.parsed_feed.entries[7].summary
|
||||||
|
jp_pre = jp_pre.replace("$", "").replace(",","")
|
||||||
|
return float(jp_pre)
|
||||||
24
twostep/TwoStep.py
Normal file
24
twostep/TwoStep.py
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
from lib.Ticket import Ticket
|
||||||
|
from .Feed import Feed
|
||||||
|
from .winning_structure import get_winnings_bb, get_winnings_no_bb
|
||||||
|
|
||||||
|
|
||||||
|
class TwoStep(Ticket):
|
||||||
|
|
||||||
|
def __init__(self, my_picks, my_special_ball, mult):
|
||||||
|
super().__init__(my_picks, my_special_ball)
|
||||||
|
self.special_ball_name = 'Bonus Ball'
|
||||||
|
self.feed = Feed()
|
||||||
|
self.get_winning_numbers()
|
||||||
|
self.multiplier = mult
|
||||||
|
|
||||||
|
def get_winnings_with_special_ball(self, jp):
|
||||||
|
return get_winnings_bb(self.jackpot)
|
||||||
|
|
||||||
|
def get_winnings_without_special_ball(self):
|
||||||
|
return get_winnings_no_bb()
|
||||||
|
|
||||||
|
def get_winning_numbers(self):
|
||||||
|
winners = self.feed.get_winning_numbers()
|
||||||
|
self.winning_numbers = winners['numbers']
|
||||||
|
self.special_ball = winners['special_ball']
|
||||||
0
twostep/__init__.py
Normal file
0
twostep/__init__.py
Normal file
21
twostep/game.py
Normal file
21
twostep/game.py
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
#! /usr/bin/python3
|
||||||
|
|
||||||
|
from .picks import my_picks
|
||||||
|
from .TwoStep import TwoStep
|
||||||
|
|
||||||
|
cur_picks = []
|
||||||
|
cur_pb = 0
|
||||||
|
winnings = {}
|
||||||
|
|
||||||
|
for idx, tkt in enumerate(my_picks):
|
||||||
|
cur_picks = tkt['picks']
|
||||||
|
cur_pb = tkt['bb']
|
||||||
|
tktnum = tkt['ticket']
|
||||||
|
pbtkt = TwoStep(cur_picks, cur_pb, 1)
|
||||||
|
pbtkt.process_ticket()
|
||||||
|
key = 'Ticket ' + str(tktnum)
|
||||||
|
if key not in winnings.keys():
|
||||||
|
winnings[key] = 0
|
||||||
|
winnings[key] += pbtkt.get_ticket_winnings()
|
||||||
|
|
||||||
|
print("Total Winnings:", winnings)
|
||||||
4
twostep/picks.py
Normal file
4
twostep/picks.py
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
my_picks = [
|
||||||
|
# quick picks #
|
||||||
|
{'picks': (17,25,27,33), 'bb': 25, 'mult': 1, 'ticket': 1},
|
||||||
|
]
|
||||||
10
twostep/winning_structure.py
Normal file
10
twostep/winning_structure.py
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
def get_winnings_bb(jackpot_cash):
|
||||||
|
return {
|
||||||
|
1: [5,7,20,50,jackpot_cash]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_winnings_no_bb():
|
||||||
|
return {
|
||||||
|
1: [0,0,0,20,1_501]
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue