【问题标题】:a list will not join the scond time but will the first time列表不会第二次加入,但会第一次加入
【发布时间】:2021-09-08 13:58:00
【问题描述】:

我想将列表转换为自动密码生成器的字符串 这是代码:

import random
import string

print("hello welcome to the random password generator! ")
level_of_password = input("what level do you want your password to be?(weak, medium, strong): ")

list_of_words_for_password = ["obama", "apples", "mom", "your", "cyber"]
if level_of_password == "weak":
    weak_password = list(random.sample(list_of_words_for_password, 2))
    weak_password = "".join(weak_password)
    print(weak_password)

elif level_of_password == "medium":
    letters_for_password = list(string.ascii_letters)
    numbers_for_password = []
    for i in range(random.randint(10, 30)):
        numbers_for_password.append(random.randint(5, 10))
    letters_and_numbers_for_password = numbers_for_password + letters_for_password
    medium_password = [random.sample(letters_and_numbers_for_password, random.randint(5, 20))]
    medium_password = "".join(medium_password)

对于弱密码,它将列表转换为字符串就好了 但是对于中等密码,如果我尝试打印它,它会给我这个错误:

line 27, in <module>
    medium_password = "".join(medium_password)
TypeError: sequence item 0: expected str instance, list found

为什么我可以加入我的中等密码的字符列表,就像我为弱密码所做的那样。

另外,我是自学python,如果你在代码中看到让你无法忍受的地方,也请告诉我。

【问题讨论】:

    标签: python string list passwords


    【解决方案1】:

    内联查找 cmets

    import random
    import string
    
    print("hello welcome to the random password generator! ")
    level_of_password = input("what level do you want your password to be?(weak, medium, strong): ")
    
    list_of_words_for_password = ["obama", "apples", "mom", "your", "cyber"]
    if level_of_password == "weak":
        weak_password = list(random.sample(list_of_words_for_password, 2))
        weak_password = "".join(weak_password)
        print(weak_password)
    
    elif level_of_password == "medium":
        letters_for_password = list(string.ascii_letters)
        numbers_for_password = []
        for i in range(random.randint(10, 30)):
            numbers_for_password.append(random.randint(5, 10))
        letters_and_numbers_for_password = numbers_for_password + letters_for_password
        #------>
        medium_password = random.sample(letters_and_numbers_for_password, random.randint(5, 20)) # remove extra []
        #               ^^^^                                                                   ^^^^
        medium_password = "".join(map(str, medium_password)) # convert intergers to string
        #                         ^^^^^^^^^^^^^^^^^^^^^^^^^
        print(medium_password)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 2014-06-01
      • 2014-12-17
      相关资源
      最近更新 更多