我的密码生成器有问题

时间:2013-03-20 04:53:14

标签: python-2.7 passwords generator ubuntu-12.10

我做了一个密码生成器 - 我只有16,所以它可能不是最好的 - 它输出8 0和像01100101那样然后在它下面输出密码。那么当密码中有一个“10”,如FG4v10Y6时,它会添加另一个字符,而不是FG4v10Y6,它将是FG4v10Y6M,所以它有九个或更多字符,具体取决于其中有多少“10”。

我不确定为什么要这样做请帮忙。 THANX!

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)

为什么代码在某些地方的帖子上显得格外奇怪,你如何修复它?

1 个答案:

答案 0 :(得分:0)

您的密码生成器正在翻转硬币,以便在添加字母或数字之间进行选择。当它选择添加号码时,您可以选择要添加的号码:

num1 = random.randint(0,10)

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

你想:

num1 = random.randint(0,9)

而是添加一个数字。