[英]Random passcode generator in python error
我正在嘗試一個隨機密碼生成器,但是我們可能只使用我列出的某些特殊符號,但是代碼一直沒有運行到一個錯誤,我不確定如何解決 go; TypeError: can only concatenate str (not "list") to str
。
這是我正在處理的代碼部分。
while True:
import string
a = ["!", "$", "%", "^", "&", "*", "(", ")", "-", "_", "=", "+"]
from random import *
characters = string.ascii_letters + a + string.digits
passcode = "".join(choice(characters) for x in range(randint(8, 12)))
print (passcode)
您應該將a
更改為str
:
import string
import random
a = "!$%^&*()-_=+"
characters = string.ascii_letters + a + string.digits
passcode = "".join(random.choice(characters) for x in range(random.randint(8, 12)))
print(passcode)
此外,使用from random import *
導入整個random
命名空間是不好的做法。
當您的代碼正常工作時,您應該在代碼審查上發布以獲取一些提示和改進。
您正在將您的列表連接到您的字符串。 您需要進行以下更改,它應該可以工作。
a = "!$%^&*()-_=+"
您需要使用 list a
、 "".join(a)
創建一個字符串。 如果你在循環之外聲明你a
列表會更好。
import string
import random
a = ["!", "$", "%", "^", "&", "*", "(", ")", "-", "_", "=", "+"]
while True:
characters = string.ascii_letters + "".join(a) + string.digits
passcode = "".join(choice(characters) for x in range(randint(8, 12)))
print (passcode)
檢查類型:
import string
a = ["!", "$", "%", "^", "&", "*", "(", ")", "-", "_", "=", "+"]
print(type(string.ascii_letters)) # <class 'str'>
print(type(a)) # <class 'list'>
print(type(string.digits)) # <class 'str'>
您需要在連接之前將所有list
s 轉換為str
或將所有str
s 轉換為list
,這是您應該做的:
characters = string.ascii_letters + "".join(a) + string.digits
或者
characters = list(string.ascii_letters) + a + list(string.digits)
在第一種情況下,您將characters
作為str
,在第二種情況下作為list
- 兩者都被random.choice
接受。 作為旁注:不要在循環內import
, import
一次就足夠了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.