2017-12-03 154 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

這就是爲什麼我問因爲我得出了同樣的結論,但沒有知道它在代碼中的樣子。 –