<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何使用 Python 實現(xiàn)彩票自由(大樂透)

          共 1134字,需瀏覽 3分鐘

           ·

          2022-03-16 08:49

          大家好,我是安果!


          全國有很多彩民,其中購買最多的彩種分別是體彩大樂透和福彩雙色球;雖然中大獎的概率極低,但是彩民紛至沓來,一方面抱著一份中獎的希望,另一方面想為公益事業(yè)貢獻自己的一份薄力
          我一直都有購買彩票的習慣,之前路過彩票店都會讓店老板機選幾注,這樣選號自定義沒那么方便,而且沒法實現(xiàn)連續(xù)購買的需求

          本篇文章將介紹 Python 實現(xiàn)彩票自由的全流程

          #?1. 隨機一注

          體彩大樂透一注包含 7 個數(shù)字,包含 5 個紅球和 2 個籃球

          其中

          • 紅球是從 1 - 35 中選擇 5 個不同的數(shù)字

          • 藍球是從 1 - 12 中選擇 2 個不同的數(shù)字

          使用 Python 隨機生成一注號碼部分代碼如下:

          def?gene_dlt(number):
          ????"""
          ????隨機多注大樂透
          ????:param?number:
          ????:return:
          ????"""

          ????result?=?[]

          ????for?index?in?range(number):
          ????????#?產(chǎn)生5個紅球
          ????????red?=?random.sample([i?for?i?in?range(1,?36)],?5)
          ????????#?產(chǎn)生2個藍球
          ????????blue?=?random.sample([i?for?i?in?range(1,?13)],?2)

          ????????#?排序
          ????????red.sort()
          ????????blue.sort()

          ????????#?數(shù)據(jù)處理
          ????????red?=?nums_pre(red)
          ????????blue?=?nums_pre(blue)

          ????????result.append('?'.join(red)?+?"?+?"?+?'?'.join(blue))
          ????return?'\n'.join(result)

          需要注意的是,為了方便后面判斷是否中獎,這里進行了一次數(shù)據(jù)預處理,將小于 10 的數(shù)字前面加上 0

          def?nums_pre(nums):
          ????"""
          ????購買數(shù)字預處理,如果是個位數(shù),加上0
          ????:param?nums:
          ????:return:
          ????"""

          ????if?nums:
          ????????if?isinstance(nums,?list)?or?isinstance(nums,tuple):
          ????????????return?['0{}'.format(int(item))?if?int(item)?10?else?str(int(item))?for?item?in?nums]
          ????????else:
          ????????????return?'0{}'.format(int(nums))?if?int(nums)?10?else?str(int(nums))
          ????else:
          ????????return?''

          #?2. 紅球固定或藍球固定

          很多彩民認為中獎號碼沒有規(guī)律,因此會選擇根據(jù)自己的幸運數(shù)字,組成一注號碼進行固定購買

          2-1 ?紅球固定

          紅球固定的情況下,我們只需要隨機生成藍球,然后進行排序、數(shù)據(jù)預處理,最后組成一注號碼即可

          def?gene_blue_random_dlt(red,?number):
          ????"""
          ????紅球固定,籃球隨機
          ????:param?red:紅球
          ????:param?number:隨機注數(shù)
          ????:return:
          ????"""

          ????result?=?[]

          ????for?index?in?range(number):
          ????????#?產(chǎn)生2個藍球
          ????????blue?=?random.sample([i?for?i?in?range(1,?13)],?2)

          ????????#?排序
          ????????red.sort()
          ????????blue.sort()

          ????????#?數(shù)據(jù)處理
          ????????red?=?nums_pre(red)
          ????????blue?=?nums_pre(blue)

          ????????result.append('?'.join(red)?+?"?+?"?+?'?'.join(blue))
          ????return?'\n'.join(result)

          2-2? 藍球固定

          藍球固定時,我們只需要從 1-35 中隨機生成 5 個不同的數(shù)字即可

          def?gene_red_random_dlt(blue,?number):
          ????"""
          ????5個紅球隨機,2個籃球固定
          ????:param?blue:藍球列表
          ????:param?number:隨機注數(shù)
          ????:return:
          ????"""

          ????result?=?[]

          ????for?index?in?range(number):
          ????????#?產(chǎn)生5個紅球
          ????????red?=?random.sample([i?for?i?in?range(1,?36)],?5)

          ????????#?排序
          ????????red.sort()
          ????????blue.sort()

          ????????#?數(shù)據(jù)處理
          ????????red?=?nums_pre(red)
          ????????blue?=?nums_pre(blue)

          ????????result.append('?'.join(red)?+?"?+?"?+?'?'.join(blue))
          ????return?'\n'.join(result)

          #?3. 爬取中獎號碼

          體彩大樂透開獎時間一般是晚上 9 點到 10 點之間,這里建議選擇晚上 10 點半進行爬蟲,保證爬取數(shù)據(jù)的穩(wěn)定準確性

          目標地址:

          aHR0cHM6Ly9rYWlqaWFuZy41MDAuY29tL3N0YXRpYy9pbmZvL2thaWppYW5nL3htbC9kbHQvbGlzdC54bWw=

          該網(wǎng)站通過 XML 數(shù)據(jù)展示了每一期大樂透的中獎號碼,我們只需要使用正則表達式匹配出所有中獎號碼,取最近的一期號碼即可

          import?re
          import?requests

          class?DLT(object):

          ????def?__init__(self):
          ????????#?自行去轉(zhuǎn)碼獲?。ü娞枺杭宓案沐X)
          ????????self.url?=?'**'
          ????????self.headers?=?{
          ????????????'User-Agent':?'Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_11_2)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/71.0.3578.98?Safari/537.36'
          ????????}

          ????def?get_last_dlt_lucky(self):
          ????????#?發(fā)起請求
          ????????reponse?=?requests.get(url=self.url,?headers=self.headers)

          ????????#?正則規(guī)則
          ????????pattern?=?re.compile(r')

          ????????#?大樂透數(shù)據(jù)
          ????????dlt_raw_list?=?pattern.findall(reponse.text)

          ????????results?=?[]

          ????????for?item?in?dlt_raw_list:
          ????????????#?期數(shù)、數(shù)據(jù)、時間
          ????????????no,?info,?create_at?=?item
          ????????????#?5個紅球、2個籃球
          ????????????red,?blue?=?info.split("|")

          ????????????red_datas?=?red.split(",")
          ????????????blue_datas?=?blue.split(",")

          ????????????results.append(
          ????????????????[no,?red_datas[0],?red_datas[1],?red_datas[2],?red_datas[3],?red_datas[4],?blue_datas[0],?blue_datas[1],
          ?????????????????create_at]
          ????????????)

          ????????#?最近的一期中獎號碼
          ????????last_lottery?=?results[0]

          ????????return?[last_lottery[1],?last_lottery[2],?last_lottery[3],?last_lottery[4],?last_lottery[5]],?\
          ???????????????[last_lottery[6],?last_lottery[7]]

          # 4. 是否中獎

          有了購買號碼、中獎號碼,我們查看體彩大樂透官網(wǎng)中獎規(guī)則,根據(jù)紅球中獎個數(shù)、藍球中獎個數(shù)返回中獎信息即可

          實現(xiàn)代碼如下:

          ...

          def?judge_dlt_lucky(red_nums_result,?red_nums_buy,?blue_nums_result,?blue_nums_buy):
          ????"""
          ????根據(jù)中獎號碼及購買號碼,返回對應的中獎信息
          ????:param?red_nums_result:
          ????:param?red_nums_buy:
          ????:param?blue_num_result:
          ????:param?blue_num_buy:
          ????:return:
          ????"""

          ????#?紅球預測的數(shù)目
          ????red_lucky_count?=?0
          ????#?籃球預測的數(shù)目
          ????blue_lucky_count?=?0

          ????#?數(shù)據(jù)預處理
          ????red_nums_buy?=?nums_pre(red_nums_buy)
          ????blue_nums_buy?=?nums_pre(blue_nums_buy)

          ????#?判斷紅球
          ????for?red_result_item?in?red_nums_result:
          ????????for?red_buy_item?in?red_nums_buy:
          ????????????if?red_result_item?==?red_buy_item:
          ????????????????red_lucky_count?+=?1

          ????#?判斷藍球
          ????for?blue_result_item?in?blue_nums_result:
          ????????for?blue_buy_item?in?blue_nums_buy:
          ????????????if?blue_result_item?==?blue_buy_item:
          ????????????????blue_lucky_count?+=?1

          ????#?大樂透中獎規(guī)則
          ????if?red_lucky_count?==?5?and?blue_lucky_count?==?2:
          ????????luck_level?=?1??#?一等獎(5+2)
          ????elif?red_lucky_count?==?5?and?blue_lucky_count?==?1:
          ????????luck_level?=?2??#?二等獎(5+1)
          ????elif?red_lucky_count?==?5?and?blue_lucky_count?==?0:
          ????????luck_level?=?3??#?三等獎(5+0)
          ????elif?red_lucky_count?==?4?and?blue_lucky_count?==?2:
          ????????luck_level?=?4??#?四等獎(4+2)
          ????elif?red_lucky_count?==?4?and?blue_lucky_count?==?1:
          ????????luck_level?=?5??#?五等獎(4+1)
          ????elif?red_lucky_count?==?3?and?blue_lucky_count?==?2:
          ????????luck_level?=?6??#?六等獎(3+2)
          ????elif?red_lucky_count?==?4?and?blue_lucky_count?==?0:
          ????????luck_level?=?7??#?七等獎(4+0)
          ????elif?red_lucky_count?==?3?and?blue_lucky_count?==?1:
          ????????luck_level?=?8??#?八等獎(3+1)
          ????elif?red_lucky_count?==?2?and?blue_lucky_count?==?2:
          ????????luck_level?=?8??#?八等獎(2+2)
          ????elif?red_lucky_count?==?3?and?blue_lucky_count?==?0:
          ????????luck_level?=?9??#?九等獎(3+0)
          ????elif?red_lucky_count?==?2?and?blue_lucky_count?==?1:
          ????????luck_level?=?9??#?九等獎(2+1)
          ????elif?red_lucky_count?==?1?and?blue_lucky_count?==?2:
          ????????luck_level?=?9??#?九等獎(1+2)
          ????elif?red_lucky_count?==?0?and?blue_lucky_count?==?2:
          ????????luck_level?=?9??#?九等獎(0+2)
          ????else:
          ????????luck_level?=?-1

          ????return?get_lucky_desc(luck_level),luck_level

          # 5. 總結(jié)一下

          通過上面的幾個步驟,我們實現(xiàn)了選號、爬取中獎號碼、判斷是否中獎等功能

          關于如何將選擇的號碼發(fā)送給站點老板,大家可以通過企業(yè)微信、UI 自動化、PC Hook 等方式來完成

          我已將文中所有源碼上傳到下方公眾號后臺,關注公眾號后回復關鍵字dlt?」即可以獲取

          如果你覺得文章還不錯,請大家?點贊、分享、留言?下,因為這將是我持續(xù)輸出更多優(yōu)質(zhì)文章的最強動力!


          瀏覽 90
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产最新自拍 | 蜜臀精品色无码蜜臀AV | 亚洲无码家庭乱论小说区 | 人人爽爽人人 | 日本在线视频不卡 |