不間斷 Python 挑戰 Day 9 - 專題:密碼產生器

更新於 發佈於 閱讀時間約 5 分鐘

綜合前幾天所學的內容,這裡實作了一個專題-密碼產生器。在這個專題中,我們運用了變數、串列、for迴圈、random模組等概念,讓使用者可以從數字、符號、英文字母中指定字元的數目,隨機生成一串密碼。

首先,先載入random模組。

# import random module
import random

利用串列定義出隨機密碼的候選字元,在這裡設定了三組集合,分別是數字0~9、特殊符號、以及英文大小寫字母。

# define characters used in password
numbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
symbols = ["~", "!", "#", "$", "%", "^", "&", "*", "(", ")", "_", "+"]
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
      'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
      'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
      'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

接著,我們讓使用者輸入在每組字元的集合中,各選出需要幾個字元來隨機組合出密碼。

# input password combination
print("Password Generator")
num_numbers = int(input("How many numbers would you like in your password?\n"))
num_symbols = int(input("How many symbols would you like in your password?\n"))
num_letters = int(input("How many letters would you like in your password?\n"))

定義一個空的串列password_list,並從各個集合中利用random.choice()隨機取出指定個數的字元,逐步加到這個串列中。

# randomly choose characters
password_list = []

for number in range(1, num_numbers + 1):
  password_list += random.choice(numbers)

for symbol in range(1, num_symbols + 1):
  password_list += random.choice(symbols)

for letter in range(1, num_letters + 1):
  password_list += random.choice(letters)

此時,雖然需要的字元已經隨機被取出,但password_list中仍是相同類型的字元緊鄰在一起,前段是數字、中段是特殊符號、後段是英文字母,因此我們必須再做一次「洗牌」的動作,才能讓密碼的排列真正變成隨機。

# shuffle the password_list
random.shuffle(password_list)

最後,將串列的內容處理一下變成字串印出。

# turn the password list into string
password = ""
for password_char in password_list:
  password += password_char
print(password)

以下是執行結果:

Password Generator
How many numbers would you like in your password?
3
How many symbols would you like in your password?
4
How many letters would you like in your password?
5
0W^qt^9_4)ki

程式範例

https://github.com/wjweng/marathon_python/blob/master/Day1_to_25/marathon_python_day9.py

留言
avatar-img
留言分享你的想法!
Syun yu-avatar-img
2022/10/14
你好 請問 1.password_list=password_list+random.choice(numers) 與 2.password_list+=random.choice(numbers)的差別 使用1.的方式需要先將random.choice(numbers)轉換為list才不會出現錯誤 可是2.不需要轉換型態 求解謝謝~
avatar-img
Wei-Jie Weng的沙龍
48會員
36內容數
Wei-Jie Weng的沙龍的其他內容
2022/07/13
對於程式的初學者而言,理解程式的流程、迴圈的進行、或是變數的變化會需要一定程度將程式在腦中進行運算的能力,要一段時間熟悉與適應,尤其是當程式執行的結果不如預期時,往往是計算的過程和自己所想像的不同,這時又更難靠自己的能力找出錯誤。因此,這邊要介紹的這個工具可以將程式執行的過程逐行將變數的變化視覺化地
Thumbnail
2022/07/13
對於程式的初學者而言,理解程式的流程、迴圈的進行、或是變數的變化會需要一定程度將程式在腦中進行運算的能力,要一段時間熟悉與適應,尤其是當程式執行的結果不如預期時,往往是計算的過程和自己所想像的不同,這時又更難靠自己的能力找出錯誤。因此,這邊要介紹的這個工具可以將程式執行的過程逐行將變數的變化視覺化地
Thumbnail
2022/07/13
在上一節介紹了 JSON 資料的基本架構後,我們將改寫並擴充密碼產生器程式,讓它能夠藉由 JSON 的資料結構完成帳密搜尋的功能。
Thumbnail
2022/07/13
在上一節介紹了 JSON 資料的基本架構後,我們將改寫並擴充密碼產生器程式,讓它能夠藉由 JSON 的資料結構完成帳密搜尋的功能。
Thumbnail
2022/06/23
JSON的全名叫JavaScript Object Notation,是由Douglas Crockford所設計的一種資料格式,最初應用在JavaScript程式語言中,做為一種資料交換的格式,而後被廣泛運用在Web開發與NoSQL資料庫,現今已成為一種重要的資料格式。
Thumbnail
2022/06/23
JSON的全名叫JavaScript Object Notation,是由Douglas Crockford所設計的一種資料格式,最初應用在JavaScript程式語言中,做為一種資料交換的格式,而後被廣泛運用在Web開發與NoSQL資料庫,現今已成為一種重要的資料格式。
Thumbnail
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
實作密碼產生器 請使用者輸入要產生幾位數的密碼長度 依據使用者輸入的密碼長度,輸出密碼 import random import string 數字 = string.digits 英文 = string.ascii_letters 字母表 = 數字 + 英文 # 0123456789abc
Thumbnail
實作密碼產生器 請使用者輸入要產生幾位數的密碼長度 依據使用者輸入的密碼長度,輸出密碼 import random import string 數字 = string.digits 英文 = string.ascii_letters 字母表 = 數字 + 英文 # 0123456789abc
Thumbnail
今天想跟大家分享一個用python做的小遊戲,叫做1A2B,這個遊戲的規則很簡單,就是電腦會隨機產生一個四位數的數字,然後玩家要猜這個數字是什麼,每次猜完,電腦會給出幾A幾B的提示,A表示位置和數字都對,B表示數字對但位置不對;例如,如果電腦產生的數字是1234,玩家猜5678,那麼電腦會回
Thumbnail
今天想跟大家分享一個用python做的小遊戲,叫做1A2B,這個遊戲的規則很簡單,就是電腦會隨機產生一個四位數的數字,然後玩家要猜這個數字是什麼,每次猜完,電腦會給出幾A幾B的提示,A表示位置和數字都對,B表示數字對但位置不對;例如,如果電腦產生的數字是1234,玩家猜5678,那麼電腦會回
Thumbnail
Python的random模組是一個非常實用的工具,可以讓我們在程式中生成隨機數或從序列中隨機選擇元素。下面介紹一些常用的random模組函數。 首先,我們需要導入random模組,可以使用以下語句進行導入: 接下來,我們來看看random模組中的一些基本函數: random.random()
Thumbnail
Python的random模組是一個非常實用的工具,可以讓我們在程式中生成隨機數或從序列中隨機選擇元素。下面介紹一些常用的random模組函數。 首先,我們需要導入random模組,可以使用以下語句進行導入: 接下來,我們來看看random模組中的一些基本函數: random.random()
Thumbnail
今天我要跟大家分享的是python寫的猜數字遊戲。遊戲的規則很簡單,就是電腦會隨機產生一個1到100之間的整數,然後讓使用者猜這個數字是多少,每次猜完電腦會提示使用者是猜大了還是猜小了,直到猜中為止,遊戲還會記錄使用者猜了幾次,並根據次數給予不同的評價,下面我們來看看程式碼吧!
Thumbnail
今天我要跟大家分享的是python寫的猜數字遊戲。遊戲的規則很簡單,就是電腦會隨機產生一個1到100之間的整數,然後讓使用者猜這個數字是多少,每次猜完電腦會提示使用者是猜大了還是猜小了,直到猜中為止,遊戲還會記錄使用者猜了幾次,並根據次數給予不同的評價,下面我們來看看程式碼吧!
Thumbnail
我們介紹了字串和列表的索引和切片操作。索引使用方括號[]來選擇字串或列表中的特定元素,並可以使用正向索引(從0開始)或反向索引(從最後一個元素為-1)來訪問元素。切片使用方括號[]和冒號:來選擇字串或列表中的一段子序列,指定起始位置和結束位置(不包含),並可以使用步長來控制間隔。
Thumbnail
我們介紹了字串和列表的索引和切片操作。索引使用方括號[]來選擇字串或列表中的特定元素,並可以使用正向索引(從0開始)或反向索引(從最後一個元素為-1)來訪問元素。切片使用方括號[]和冒號:來選擇字串或列表中的一段子序列,指定起始位置和結束位置(不包含),並可以使用步長來控制間隔。
Thumbnail
綜合前幾天所學的內容,這裡實作了一個專題-密碼產生器。在這個專題中,我們運用了變數、串列、for迴圈、random模組等概念,讓使用者可以從數字、符號、英文字母中指定字元的數目,隨機生成一串密碼。
Thumbnail
綜合前幾天所學的內容,這裡實作了一個專題-密碼產生器。在這個專題中,我們運用了變數、串列、for迴圈、random模組等概念,讓使用者可以從數字、符號、英文字母中指定字元的數目,隨機生成一串密碼。
Thumbnail
當我們需要在程式中模擬或實作一些隨機發生的事件,例如模擬猜拳、丟骰子的結果,便需要程式可以根據開發者輸入的數值範圍、型態等,隨機產生一個結果,而Python的random()函數便是用於實現這個功能。
Thumbnail
當我們需要在程式中模擬或實作一些隨機發生的事件,例如模擬猜拳、丟骰子的結果,便需要程式可以根據開發者輸入的數值範圍、型態等,隨機產生一個結果,而Python的random()函數便是用於實現這個功能。
Thumbnail
進入第4天教學,今天繼續學習基礎的教學,是跟容器型態(list、tuple、dict)、迴圈(while、for)相關的教學,迴圈是今天的重點,記得好好學習唷!!
Thumbnail
進入第4天教學,今天繼續學習基礎的教學,是跟容器型態(list、tuple、dict)、迴圈(while、for)相關的教學,迴圈是今天的重點,記得好好學習唷!!
Thumbnail
這次來講解一下如何應用變數來製作密碼寶箱,那這次的話會順便帶到關於「流程」的說明,如果想要自己設定「謎題」或是「關卡流程」都可以先使用流程圖來進行設計。
Thumbnail
這次來講解一下如何應用變數來製作密碼寶箱,那這次的話會順便帶到關於「流程」的說明,如果想要自己設定「謎題」或是「關卡流程」都可以先使用流程圖來進行設計。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News