0

我做了一个密码生成器——我只有 16 岁,所以它可能不是最好的——它输出 8 0 和 01100101 之类的,然后它输出密码。好吧,当密码中有“10”时,例如 FG4v10Y6,它会添加另一个字符,因此它不是 FG4v10Y6,而是 FG4v10Y6M,因此它有 9 个或更多字符,具体取决于其中有多少个“10”。

我不确定它为什么这样做,请帮忙。谢谢!

import pygame
import random

pygame.init()

#letters

reg = ['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']

CAP = ['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']

final_pass = []
num_let_list = []
new_list = []

i = 0

file = open("password_test","w")


def num_list_gen(num_list):
    for i in range(8):
        num_let_list.append(random.randint(0,1))
        i += 1

    for each in num_let_list:
        each = str(each)
        new_list.append(each)   
    print ''.join(new_list)

def CAP_reg_num(final_pass,num_let_list,CAP,reg):
    for each in num_let_list:
        if each == 0:
            cap_reg = random.randint(0,1)
            if cap_reg == 0:
                let1 = random.randint(0,25)
                final_pass.append(reg[let1])
            if cap_reg == 1:
                let1 = random.randint(0,25)
                final_pass.append(CAP[let1])
        if each == 1:

                    num1 = random.randint(0,10)
            num1 = str(num1)
                    final_pass.append(num1)

def main(CAP,reg,num_let_list,final_pass):
    num_list_gen(num_let_list)
    CAP_reg_num(final_pass,num_let_list,CAP,reg)
    print ''.join(final_pass)
    file.write(''.join(final_pass))
    file.close

main(CAP,reg,num_let_list,final_pass)

为什么代码在某些地方的帖子上出现的都很奇怪,你如何解决它?

4

1 回答 1

0

您的密码生成器正在掷硬币以选择添加字母或数字。当它选择添加号码时,您选择要添加的号码:

num1 = random.randint(0,10)

但是,这不会返回单个数字。它返回 11 个可能值之一:0 到 10 之间的数字。所以在 11 中的一次,它会将数字 10 添加到字符串中,这当然是两位数。

你要:

num1 = random.randint(0,9)

而是添加一个数字。

于 2013-03-20T06:01:46.817 回答