【问题标题】:something wrong with my password generator我的密码生成器有问题
【发布时间】:2013-03-20 04:53:14
【问题描述】:

我做了一个密码生成器——我只有 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)

为什么有些地方的帖子里的代码很奇怪,你如何解决它?

【问题讨论】:

  • 我不确定我是否明白你在问什么。问题只是您的行 num1 = random.randint(0,10) 返回的值从 0 到 10(包括端点)?这是documented。如果您不想包含更高的值,请尝试random.randrange

标签: python-2.7 passwords generator ubuntu-12.10


【解决方案1】:

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

num1 = random.randint(0,10)

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

你想要:

num1 = random.randint(0,9)

而不是添加一个数字。

【讨论】:

  • 哦好的,我明白了,谢谢!我很高兴这真的很简单,但同时我应该知道这一点。
猜你喜欢
  • 2021-08-19
  • 1970-01-01
  • 2021-01-30
  • 2020-03-09
  • 2020-07-24
  • 2022-11-22
  • 2021-05-10
  • 2011-06-02
  • 2021-08-11
相关资源
最近更新 更多