2017-12-03 157 views
0
import random 
import string 

oneFile = open('password.txt', 'w') 
userInput = 0 
key_count = 0 
key = [] 
chars = string.ascii_uppercase + string.digits + string.ascii_lowercase 

for userInput in range(int(input('How many keys needed?'))): 
    while key_count <= userInput: 
     number = random.randint(1, 999) 
     if number not in key: 
      key_count += 1 
      key.append(number) 
      text = str(number) + ": " + str(''.join(random.sample(chars*6, 16))) 
      oneFile.write(text + "\n") 

oneFile.close() 

print("Data written, please Rename or it will be over written.") 
raw_input("press enter to exit") 

我如何得到它让出来放看起来是这样的:
955:PFtKg-r1fd1-g9FX23与字符的选择量后的破折号之间?如何在输出之间自动添加破折号?

text = str(number) + ": " + str(''.join(random.sample(chars*6, 16))) 
#puts everything together but i would have to repeat 
# + str(''.join(random.sample(chars*6, 16))) on the line in code 

回答

1

基于this你可以写(dashPer代表字符选定量):

'-'.join(text[i:i+dashPer] for i in range(0, len(text), dashPer)) 

在刚刚替换:

text = str(number) + ": " + str(''.join(random.sample(chars*6, 16))) 

有:

dashPer = 5 
text = str(''.join(random.sample(chars*6, 16))) 
text = '' + '-'.join(text[i:i+dashPer] for i in range(0, len(text), dashPer)) 
text = str(number) + ": " + text 
+0

优秀!非常感谢!我知道有一种更好的方法,然后重复一遍又一遍的单行代码。 –

1

将您的密码分成三个随机字符并用' - '(连字符)连接。所以,您的密码将是:

completePassword = pass[0] + '-' + pass[1] + '-' + pass[2] 
0

一种解决方案可以是,如果条件为使用另一个你的随机字符产生块,检查计数器用于字符生成的数字,并增加了一个短划线内,如果它是一定数量和复位柜台。也许有更好的答案,但这肯定会起作用。

或者一次生成四个随机字符并将其附加一个破折号直到程序的文本运行。

+0

这就是为什么我问因为我得出了同样的结论,但没有知道它在代码中的样子。 –