我做了一个密码生成器 - 我只有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)
为什么代码在某些地方的帖子上显得格外奇怪,你如何修复它?
答案 0 :(得分:0)
您的密码生成器正在翻转硬币,以便在添加字母或数字之间进行选择。当它选择添加号码时,您可以选择要添加的号码:
num1 = random.randint(0,10)
但是,这不会返回单个数字。它返回11个可能值中的一个:0到10之间的数字(包括0和10)。所以在11中的一次,它会将数字10添加到字符串中,当然,这是两位数。
你想:
num1 = random.randint(0,9)
而是添加一个数字。