簡體   English   中英

python 錯誤中的隨機密碼生成器

[英]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接受。 作為旁注:不要在循環內importimport一次就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM