添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

這篇文章會介紹使用 Python 的 random 隨機數模組,做出大樂透電腦選號的程式 ( 從 1~49 個數字中,選出六個不重複的數字 )。

本篇使用的 Python 版本為 3.7.12, 所有範例可使用 Google Colab 實作 ,不用安裝任何軟體 ( 參考: 使用 Google Colab )

方法一、串列判斷

先建立一個空串列,接著不斷將 1~49 的隨機數放入串列中,放入時進行判斷,如果串列中已經有該數字就不放入,直到串列的長度等於 6 為止。

參考: while 迴圈 random.randint if 判斷式

import random
a = []                           # 建立空串列
while len(a)<6:                  # 使用 while 迴圈,直到串列的長度等於 6 就停止
    b = random.randint(1, 49)    # 取出 1~49 得隨機整數
    if b not in a:               # 判斷如果 a 裡面沒有 b
        a.append(b)              # 將 b 放入 a
print(a)                         # [34, 18, 31, 11, 47, 46]

方法二、搭配集合 set

因為 Python 的集合有著「項目不會重複」的特性,所以只要將 1~49 的隨機數字不斷放到一個集合裡,直到集合的項目到達六個,就完成選號不重複的動作。

參考:集合

import random
a = set()                       # 建立空集合
while len(a)<6:                 # 使用 while 迴圈,直到集合的長度等於 6 就停止
    b = random.randint(1, 49)   # 取出 1~49 得隨機整數
    a.add(b)                    # 將隨機數加入集合
print(a)                        # {34, 41, 48, 49, 19, 30}

方法三、使用 random.sample

因為 Python random 模組裡的 random.sample 具有取出不重複項目的特性,所以只要使用 random.sample 就能輕鬆的取得串列中的六個不重複數字。

參考:random.sample(seq, k)range(start, stop, step)

import random
a = random.sample(range(1, 50), 6)
# 從包含 1~49 數字的串列中,取出六個不重複的數字變成串列
print(a)   # [9, 39, 10, 8, 25, 43]
          

如果有任何建議或問題,可傳送「意見表單」給我,謝謝~

Python 教學

Python 學習導讀 關於 Python 使用 Google Colab 使用 Anaconda 使用 Python 虛擬環境 Python 範例集錦 變數 variable 變數 ( 全域、區域 ) 數字 number 文字與字串 string 文字與字串 ( 常用方法 ) 文字與字串 ( 格式化 ) 串列 list 串列 ( 常用方法 ) 元組/數組 tuple 字典 dictionary 集合 set 縮排和註解 運算子 operator 邏輯判斷 ( if、elif、else ) 邏輯判斷 ( and 和 or ) 重複迴圈 ( for、while ) 例外處理 ( try、except ) 生成式 comprehension 物件類別 class 物件繼承 inheritance 匯入模組 import 函式 function 匿名函式 lambda 遞迴 recursion 產生器 generator 裝飾器 decorator 閉包 closure

內建函式&方法

輸入與輸出 字串操作與轉換 迭代物件轉換 迭代物件操作 檔案讀寫 ( open ) eval() 與 exec()

標準函式庫&模組

隨機數 random 數學 math 數學統計函式 statistics 時間與日期 datetime 時間處理 time 日曆 calendar 使用正規表達式 re 檔案操作 os 查找匹配檔案 glob 壓縮檔案 zipfile 高階檔案操作 shutil 高效迭代器 itertools 容器資料型態 collections CSV 檔案操作 JSON 檔案操作 threading 多執行緒處理 concurrent.futures