我目前正在制作一個包含密碼生成器的密碼管理器。我的想法是,對于給定密碼長度的每個字符,程式將從“chars”串列中隨機獲取一個變數,然后獲取字串的隨機索引并將其添加到最終的“密碼字串”中。
letters_small = "abcdefghijklmnopqrstuvwxyz"
letters_cap = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
nums = "134567890"
special_chars = "!@#$%^&*?><"
chars = [letters_cap, letters_small, nums, special_chars]
Charlist = []
password = ""
len = ""
def generator():
while True:
len = input("Enter the length of the password: ")
break
for i in range(len):
Charlist = chars[random.randint(0, 3)]
password.append(Charlist[0[random.randint(0, len(Charlist[0]))]])
每次我嘗試除錯此部分時,它都會引發此錯誤
SyntaxWarning: 'int' object is not subscriptable; perhaps you missed a comma?
password.append(Charlist[0[random.randint(0, len(Charlis))]])
我試圖通過在最后一行添加一個索引來修復它,但這并沒有做任何事情
password.append(Charlist[0[random.randint(0, len(Charlis[0]))]])
uj5u.com熱心網友回復:
您收到錯誤是因為[0[...]]. 這里, 0 是一個整數,而不是 a list,所以它是不可下標的。此外,還有許多其他問題。likelen是一個保留詞。當您將其用作變數并嘗試使用時len(Charlist[0]),它會出錯。len是一個str當輸入被接受的時候。
此外,break陳述句和while回圈是不必要的。
更正的代碼
import random
letters_small = "abcdefghijklmnopqrstuvwxyz"
letters_cap = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
nums = "134567890"
special_chars = "!@#$%^&*?><"
chars = [letters_cap, letters_small, nums, special_chars]
Charlist = []
password = ""
passwordLen = ""
def generator():
passwordLen = input("Enter the length of the password: ")
passwordLen = int(passwordLen)
password = ""
for i in range(passwordLen):
Charlist = chars[random.randint(0, 3)]
password = Charlist[random.randint(0, len(Charlist)-1)]
print(password)
generator()
uj5u.com熱心網友回復:
皮蓋伊,
- 您可以將復雜/較長的陳述句分解為多個更簡單的陳述句,以獲得更清晰和易于理解的代碼。
- 使用除錯器(例如:pdb)來除錯此類錯誤。
撰寫清晰的代碼可能有助于快速除錯問題。就您而言,我相信這可能是問題所在:
Charlist[0[->Charlist[0][
uj5u.com熱心網友回復:
len 是 python chan 中的內置函式
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/489290.html
標籤:Python python-3.x 列表
上一篇:基于第二個字典轉換/合并字典
