自學(xué)Python第六天:實(shí)戰(zhàn)練習(xí)——機(jī)選雙色球

Python自學(xué)第六天:實(shí)戰(zhàn)練習(xí)——機(jī)選雙色球

我是一個(gè)編程小白,目前從事運(yùn)維工作。
對(duì)于運(yùn)維相關(guān)的技術(shù),基本上都是了解點(diǎn)皮毛。
因?yàn)樽罱佑|自動(dòng)化運(yùn)維工具,看到很多工具都需要用到Python來(lái)寫(xiě)腳本。
于是,利用業(yè)余時(shí)間,開(kāi)始自學(xué)Python。
目的并不是要學(xué)到很精通,而是希望大致看明白別人寫(xiě)的代碼,自己也可以編寫(xiě)一些簡(jiǎn)單的代碼即可。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、重慶小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了鹽亭免費(fèi)建站歡迎大家使用!

下面是我結(jié)合最近幾天的學(xué)習(xí)成果,又通過(guò)網(wǎng)絡(luò)簡(jiǎn)單查詢(xún)學(xué)習(xí)了一下:random.sample 的功能和使用方法,編寫(xiě)的一段代碼。
大致功能就是,可以根據(jù)用戶(hù)的選擇,隨機(jī)生成雙色球彩票號(hào)碼,并計(jì)算出購(gòu)買(mǎi)這些彩票所需要的金額。
不多不少,正好200行。
一方面,相對(duì)于這六天的學(xué)習(xí)時(shí)間來(lái)說(shuō),
這次實(shí)戰(zhàn)練習(xí)的效果,我還是比較滿(mǎn)意的,也堅(jiān)定了我繼續(xù)學(xué)習(xí)下去的信心。
另一方面,在寫(xiě)代碼的過(guò)程中,自己可以感覺(jué)出來(lái),這段代碼非常的臃腫,這應(yīng)該是受我目前所掌握的知識(shí)太少所限。
希望日后可以有所改善,
也希望如果哪位前輩高人,機(jī)緣巧合看到了我的這篇博文,可以不吝賜教一下后學(xué)末進(jìn),在此不勝感激?。?!
OK,廢話不多少,直接上代碼。

#!/var/bin/env python
# -*- coding:utf-8 -*-
# 雙色球機(jī)選小程序,可以根據(jù)用戶(hù)的選擇,輸入對(duì)應(yīng)的彩票號(hào)碼和金額
# 作者:王龍
# 最后日期:2022年9月7日
# version: v0.1
import random

red_ball = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
            30, 31, 32, 33}  # 定義紅色球列表;
blue_ball = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}  # 定義藍(lán)色球列表;
menu1 = menu2 = menu3 = red_count = blue_count = price = "0"  # 為了消除“變量未定義”報(bào)錯(cuò)。
info1 = """
##################################
     歡迎使用雙色球機(jī)選工具 v1.0
##################################
---------- 投注模式 ----------
1   單式
2   復(fù)式
"""  # 定義1級(jí)菜單;
info2 = """
--------- 隨機(jī)&鎖定號(hào)碼 ---------
1   全部隨機(jī)
2   手動(dòng)鎖定個(gè)別號(hào)碼
"""  # 定義2級(jí)菜單;
info3 = """
---------- 鎖定號(hào)碼 ----------
1   僅鎖定紅球
2   僅鎖定藍(lán)球
3   紅球、藍(lán)球均鎖定
"""  # 定義3級(jí)菜單;
level = 1  # 為了進(jìn)入while定義
while level == 1:  # 當(dāng) level = 1 時(shí) while 循環(huán)開(kāi)始;
    print(info1)  # 打印1級(jí)菜單;
    menu1 = input("您選擇的投注模式為:")  # 提示用戶(hù)輸入;
    if not (menu1 == "1" or menu1 == "2"):  # 判斷,如果用戶(hù)輸入的menu1不是“1”或“2”;
        print("輸入有誤,請(qǐng)重新輸入。")  # 提示用戶(hù);
        continue  # 結(jié)束本次循環(huán),返回while重新開(kāi)始;
    if menu1 == "1":  # 如果,menu1 = “1”;
        level = 2  # 賦值level = 2;
    if menu1 == "2":  # 如果,menu1 = "2";
        level = 4  # 賦值level = 4;
while level == 4:  # 當(dāng) level = 4 時(shí) while 循環(huán)開(kāi)始;
    red_count = input("請(qǐng)輸入紅球數(shù)量[6-20]:")  # 提示用戶(hù)輸入復(fù)式紅球數(shù)量;
    blue_count = input("請(qǐng)輸入藍(lán)球數(shù)量[1-16]:")  # 提示用戶(hù)輸入復(fù)式藍(lán)球數(shù)量;
    r = 6 <= int(red_count) <= 20  # r 如果大于等于6,小于等于20 則為 True,否則為 False;
    b = 1 <= int(blue_count) <= 16  # b 如果大于等于1,小于等于16 則為 True,否則為 False;
    if r and b:  # 如果 a 和 b 均為 True;
        level = 2  # 賦值 level = 2;
    else:  # 否則
        print("輸入有誤,請(qǐng)重新輸入。")  # 提示用戶(hù);
        continue  # 結(jié)束本次循環(huán),返回while重新開(kāi)始;
while level == 2:  # 當(dāng) level = 2 時(shí),while 循環(huán)開(kāi)始;
    print(info2)  # 打印2級(jí)菜單
    menu2 = input("請(qǐng)輸入您的選項(xiàng):")  # 提示用戶(hù)輸入;  
    if not (menu2 == "1" or menu2 == "2"):  # 如果 menu2 不是 “1” 或 “2”;
        print("輸入有誤,請(qǐng)重新輸入。")  # 提示用戶(hù)輸入錯(cuò)誤
        continue  # 結(jié)束本次循環(huán),返回while重新開(kāi)始;
    if menu2 == "1":  # 如果 menu2 = “1”;
        level = 0  # 賦值 level = 0;
    if menu2 == "2":  # 如果 menu2 = “2”;
        level = 3  # 賦值 level = 3;
while level == 3:  # 當(dāng) level = 3 時(shí),while 循環(huán)開(kāi)始;
    print(info3)  # 打印3級(jí)菜單;
    menu3 = input("請(qǐng)輸入您的選項(xiàng):")  # 提示用戶(hù)輸入  
    if not (menu3 == "1" or menu3 == "2" or menu3 == "3"):  # 如果 menu3 不是 “1” 或 “2” 或 “3”;
        print("輸入有誤,請(qǐng)重新輸入。")  # 提示用戶(hù)輸入錯(cuò)誤;
        continue  # 結(jié)束本次循環(huán),返回while重新開(kāi)始;
    else:  # 否則;
        break  # 結(jié)束循環(huán);
cycle = int(input("您需要機(jī)選幾組號(hào)碼:"))  # 提示用戶(hù)如數(shù)機(jī)選幾組號(hào)碼,int轉(zhuǎn)換為整型,方便后面使用;
if menu1 == "1":  # 如果 menu1 = “1”;
    if menu2 == "1":  # 如果 menu2 = “1”;
        for i in range(cycle):  # 循環(huán) cycle 次;
            red_sample = random.sample(red_ball, 6)  # 從集合 red_ball 中,隨機(jī)抽取 6 個(gè)元素,組成列表 red_sample;
            red_sample.sort(reverse=False)  # 將列表列表 red_sample 從小到大排序;
            blue = random.sample(blue_ball, 1)  # 從集合 blue_ball 中,隨機(jī)抽取 1 個(gè)元素,組成列表 blue;
            number = i + 1  # 賦值 number = i + 1  # (i從0 開(kāi)始到 cycle-1 結(jié)束,);
            text = "第{0}組,紅球:{1}  +  藍(lán)球:{2}"  # 賦值字符串 text 格式化;
            msg = text.format(number, red_sample, blue)  # 字符串 text 格式化,{0} = number | {1} = red_sample | {2} = blue;
            print(msg)  # 打印字符串 msg;
    if menu3 == "1":  # 如果 menu3  = “1”;
        red_lock = input("請(qǐng)輸入您要鎖定的紅球號(hào)碼,多個(gè)號(hào)碼間,請(qǐng)使用”+“加號(hào)間隔:")  # 提示用戶(hù)輸入鎖定的紅球,賦值給字符串 red_lock;
        red_lock_list = red_lock.split("+")  # 以 “+” 為分隔符,分割字符串 red_lock,生成列表 red_lock_list;
        red_lock_set = set()  # 創(chuàng)建一個(gè)空集合,red_lock_set;
        for num in red_lock_list:  # 對(duì)列表 red_lock_list 進(jìn)行 for 循環(huán);
            red_lock_set.add(int(num))  # num轉(zhuǎn)換為整型,追加到集合 red_lock_set 中;
        red_dif = red_ball.difference(red_lock_set)  # 獲取 red_ball 對(duì) red_lock_set 的差集,生成新集合 red_dif;
        for i in range(cycle):  # 循環(huán) cycle 次;
            red_dif_sample = random.sample(red_dif, 6 - len(red_lock_set))  # 從集合 red_dif 中,抽取6-len(red_lock_set)組成新列表;
            red_sample = list(set(red_dif_sample).union(red_lock_set))  # 取 red_dif_sample 和 red_lock_set 的并集組成新列表;
            red_sample.sort(reverse=False)  # 將列表 red_sample 從小到大排序;
            blue = random.sample(blue_ball, 1)  # 從集合 blue_ball 中,隨機(jī)抽取 1 個(gè)元素,組成列表 blue;
            number = i + 1  # 賦值 number = i + 1  # (i從0 開(kāi)始到 cycle-1 結(jié)束,);
            text = "第{0}組,紅球:{1}  +  藍(lán)球:{2}"  # 賦值字符串 text 格式化;
            msg = text.format(number, red_sample, blue)  # 字符串 text 格式化,{0} = number | {1} = red_sample | {2} = blue;
            print(msg)  # 打印字符串 msg;
    if menu3 == "2":  # 如果 menu3 = "2";
        blue_lock = input("請(qǐng)輸入您要鎖定的藍(lán)球號(hào)碼:")  # 提示用戶(hù)輸入鎖定的藍(lán)球,賦值給字符串 red_lock;
        blue = "[%s]" % (blue_lock,)  # 字符串 blue_lock 格式化后,賦值給 字符串 blue;
        for i in range(cycle):  # 循環(huán) cycle 次;
            red_sample = random.sample(red_ball, 6)  # 從集合 red_ball 中,隨機(jī)抽取 6 個(gè)元素,組成列表 red_sample;
            red_sample.sort(reverse=False)  # 將列表 red_sample 從小到大排序;
            number = i + 1  # 賦值 number = i + 1  # (i從0 開(kāi)始到 cycle-1 結(jié)束,);
            text = "第{0}組,紅球:{1}  +  藍(lán)球:{2}"  # 賦值字符串 text 格式化;
            msg = text.format(number, red_sample, blue)  # 字符串 text 格式化,{0} = number | {1} = red_sample | {2} = blue;
            print(msg)  # 打印字符串 msg;
    if menu3 == "3":  # 如果 menu3 = "3";
        blue_lock = input("請(qǐng)輸入您要鎖定的藍(lán)球號(hào)碼:")  # 提示用戶(hù)輸入鎖定的藍(lán)球,賦值給字符串 red_lock;
        blue = "[%s]" % (blue_lock,)  # 字符串 blue_lock 格式化后,賦值給 字符串 blue;
        red_lock = input("請(qǐng)輸入您要鎖定的紅球號(hào)碼,多個(gè)號(hào)碼間,請(qǐng)使用”+“加號(hào)間隔:")  # 提示用戶(hù)輸入鎖定的紅球,賦值給字符串 red_lock;
        red_lock_list = red_lock.split("+")  # 以 “+” 為分隔符,分割字符串 red_lock,生成列表 red_lock_list;
        red_lock_set = set()  # 創(chuàng)建一個(gè)空集合,red_lock_set;
        for num in red_lock_list:  # 對(duì)列表 red_lock_list 進(jìn)行 for 循環(huán);
            red_lock_set.add(int(num))  # num轉(zhuǎn)換為整型,追加到集合 red_lock_set 中;
        red_dif = red_ball.difference(red_lock_set)  # 獲取 red_ball 對(duì) red_lock_set 的差集,生成新集合 red_dif;
        for i in range(cycle):  # 循環(huán) cycle 次;
            red_dif_sample = random.sample(red_dif, 6 - len(red_lock_set))  # 從集合 red_dif 中,抽取6-len(red_lock_set)組成新列表;
            red_sample = list(set(red_dif_sample).union(red_lock_set))  # 取 red_dif_sample 和 red_lock_set 的并集組成新列表;
            red_sample.sort(reverse=False)  # 將列表 red_sample 從小到大排序;
            number = i + 1  # 賦值 number = i + 1  # (i從0 開(kāi)始到 cycle-1 結(jié)束,);
            text = "第{0}組,紅球:{1}  +  藍(lán)球:{2}"  # 賦值字符串 text 格式化;
            msg = text.format(number, red_sample, blue)  # 字符串 text 格式化,{0} = number | {1} = red_sample | {2} = blue;
            print(msg)  # 打印字符串 msg;
    price = int(cycle) * 2  # 單式機(jī)選價(jià)格公式,每注2元,共 cycle 注;
if menu1 == "2":  # 用戶(hù)選擇復(fù)式,很多與之前時(shí)一樣。
    if menu2 == "1":
        for i in range(cycle):
            red_sample = random.sample(red_ball, int(red_count))  # 從 red_ball 中,隨機(jī)抽取 red_count 個(gè)元素(用戶(hù)選擇的復(fù)式紅球數(shù))
            red_sample.sort(reverse=False)
            blue = random.sample(blue_ball, int(blue_count))  # 從 blue_ball 中,隨機(jī)抽取 blue_count 個(gè)元素(用戶(hù)選擇的復(fù)式藍(lán)球數(shù))
            blue.sort(reverse=False)
            number = i + 1
            text = "第{0}組,紅球:{1}  +  藍(lán)球:{2}"
            msg = text.format(number, red_sample, blue)
            print(msg)
    if menu3 == "1":
        red_lock = input("請(qǐng)輸入您要鎖定的紅球號(hào)碼,多個(gè)號(hào)碼之間,請(qǐng)使用”+“加號(hào)間隔:")
        red_lock_list = red_lock.split("+")
        red_lock_set = set()
        for num in red_lock_list:
            red_lock_set.add(int(num))
        red_dif = red_ball.difference(red_lock_set)
        for i in range(cycle):
            red_dif_sample = random.sample(red_dif, int(red_count) - len(red_lock_set))
            red_sample = list(set(red_dif_sample).union(red_lock_set))
            red_sample.sort(reverse=False)
            blue = random.sample(blue_ball, int(blue_count))
            blue.sort(reverse=False)
            number = i + 1
            text = "第{0}組,紅球:{1}  +  藍(lán)球:{2}"
            msg = text.format(number, red_sample, blue)
            print(msg)
    if menu3 == "2":
        blue_lock = input("請(qǐng)輸入您要鎖定的藍(lán)球號(hào)碼,多個(gè)號(hào)碼之間,使用“+”加號(hào)間隔:")
        blue_lock_list = blue_lock.split("+")
        blue_lock_set = set()
        for num in blue_lock_list:
            blue_lock_set.add(int(num))
        blue_dif = blue_ball.difference(blue_lock_set)
        for i in range(cycle):
            blue_dif_sample = random.sample(blue_dif, int(blue_count) - len(blue_lock_set))
            blue = list(set(blue_dif_sample).union(blue_lock_set))
            blue.sort(reverse=False)
            red_sample = random.sample(red_ball, int(red_count))
            red_sample.sort(reverse=False)
            number = i + 1
            text = "第{0}組,紅球:{1}  +  藍(lán)球:{2}"
            msg = text.format(number, red_sample, blue)
            print(msg)
    if menu3 == "3":
        blue_lock = input("請(qǐng)輸入您要鎖定的藍(lán)球號(hào)碼:")
        blue_lock_list = blue_lock.split("+")
        blue_lock_set = set()
        for num in blue_lock_list:
            blue_lock_set.add(int(num))
        blue_dif = blue_ball.difference(blue_lock_set)
        red_lock = input("請(qǐng)輸入您要鎖定的紅球號(hào)碼,多個(gè)號(hào)碼間,請(qǐng)使用”+“加號(hào)間隔:")
        red_lock_list = red_lock.split("+")
        red_lock_set = set()
        for num in red_lock_list:
            red_lock_set.add(int(num))
        red_dif = red_ball.difference(red_lock_set)
        for i in range(cycle):
            blue_dif_sample = random.sample(blue_dif, int(blue_count) - len(blue_lock_set))
            blue = list(set(blue_dif_sample).union(blue_lock_set))
            blue.sort(reverse=False)
            red_dif_sample = random.sample(red_dif, int(red_count) - len(red_lock_set))
            red_sample = list(set(red_dif_sample).union(red_lock_set))
            red_sample.sort(reverse=False)
            number = i + 1
            text = "第{0}組,紅球:{1}  +  藍(lán)球:{2}"
            msg = text.format(number, red_sample, blue)
            print(msg)
    rc = int(red_count)
    bc = int(blue_count)
    nrc = rc * (rc - 1) * (rc - 2) * (rc - 3) * (rc - 4) * (rc - 5)
    mrc = 1 * 2 * 3 * 4 * 5 * 6
    price = nrc / mrc * bc * int(cycle) * 2  # 組合公式 從 n 中取 m 個(gè)數(shù) = nrc / mrc;
print("彩票金額共計(jì):%s元" % (price,))  # 打印彩票價(jià)格。

網(wǎng)站名稱(chēng):自學(xué)Python第六天:實(shí)戰(zhàn)練習(xí)——機(jī)選雙色球
標(biāo)題URL:http://m.kartarina.com/article22/dsogecc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、搜索引擎優(yōu)化云服務(wù)器、建站公司網(wǎng)站營(yíng)銷(xiāo)、定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
主站蜘蛛池模板: 亚洲人av高清无码| 人妻无码第一区二区三区| 无码办公室丝袜OL中文字幕| 亚洲国产精品无码久久久秋霞2| 亚洲av日韩av无码黑人| 蜜桃无码一区二区三区| 亚洲aⅴ无码专区在线观看春色 | 亚洲成AV人片天堂网无码| 99无码人妻一区二区三区免费| 亚洲av无码片vr一区二区三区| 亚洲美日韩Av中文字幕无码久久久妻妇| 亚洲av无码一区二区三区不卡| 国产成人无码精品久久久露脸 | 无码人妻少妇久久中文字幕| 无码专区中文字幕无码| 中文字幕精品无码久久久久久3D日动漫 | 亚洲中文字幕无码专区| 亚洲中文字幕无码一去台湾| 亚洲欧洲自拍拍偷午夜色无码| 熟妇人妻无码xxx视频| 91久久精品无码一区二区毛片| 亚洲精品无码成人片久久| 国产精品免费看久久久无码| 亚洲成a∧人片在线观看无码| 蜜桃无码AV一区二区| 久久午夜福利无码1000合集| 亚洲Aⅴ无码专区在线观看q| 国产在线拍偷自揄拍无码| 国产成人AV无码精品| 人妻无码久久中文字幕专区| 国产精品成人无码久久久| 国产丰满乱子伦无码专| 亚洲性无码一区二区三区| 在线观看成人无码中文av天堂| 日韩人妻精品无码一区二区三区| 亚洲av无码国产精品夜色午夜 | 18禁无遮挡无码网站免费 | 无码人妻一区二区三区av| 日日摸夜夜添无码AVA片| 99精品人妻无码专区在线视频区 | 亚洲精品无码久久久久sm|