2017-06-03 204 views
-2

我正在嘗試創建密碼生成器。我試過使用for循環來生成每個數字。然後我將每個數字附加到列表中。不過,我想輸出是沿着線的東西:Python - 將字符添加到字符串

54324 

而不是:

[5, 4, 3, 2, 4] 

以下是我的代碼:

code = '' 
    chars = 5 
    for i in range(chars): 
     digit = str(randint(0,9)) 
     digit += code 

在這種情況下會發生什麼事是我的輸出只是空白。我對python有點新,所以我可能會錯過一些明顯的東西,但是如果你能解釋我做錯了什麼以及如何解決它,我將不勝感激。

+3

' 「」。加入(圖(STR,[5,4,3,2,4]) )'應該這樣做 –

+1

但是你的代碼沒有任何用處,因爲每次調用循環時都會覆蓋'digit'。和'code'是空的。 –

+3

顛倒你最後的聲明:'code + = digit' –

回答

1

代碼的修正版本

from random import randint 
code = '' 
chars = 5 
for i in range(chars): 
    digit = str(randint(0,9)) 
    code += digit 
print(code) 

順便說一下,你可以只使用

code = randint(0,99999) 
print(code) 

來生成密碼,只是說

0

在每個循環中,您正在擦除變量數字中包含的前一個值,並且此變量代碼在此處無用,因爲它是空的。

你可能只是這樣做:

chars = 5 
for i in range(chars): 
    digit += str(randint(0,9)) 
0

你試圖打印這是個位數的隨機數,你必須把它添加到其他字符串存儲

from random import randint 
code = '' 
chars = 5 
for i in range(chars): 
    digit = str(randint(0,9)) 
    code = code +digit 
print(code) 

希望這有助於

0

由於您附加到code它應該像這樣:

code +=digit 
+0

明白了,一定會恪守。 –

1

您的代碼每次都會覆蓋digit。你生成一個0到9之間的隨機整數,然後把它變成一個字符串。然後你添加一個code到這個digit字符串。然後在for循環的下一次迭代中,爲digit生成一個新值。所以,你不應該得到你應該得到的digit一位數的值,一個整數的字符串表示空白值 - 介於0 -

9.你的價值觀應該被分配並添加到code,不digit

code = '' 
chars = 5 
for i in range(chars): 
    digit = str(randint(0, 9)) 
    code += digit 

print(code) 
1

除了在代碼中明顯的錯誤,修復它會給你一個underperformant代碼:

  • 醜陋for
  • 5調用隨機數發生器
  • 5個轉換從int到字符串
  • 字符串拼接

如果您想要生成一個由5個數字組成的密碼,因爲不需要數字的唯一性(如在另一個類似的問題中,這種技術不適用),您可以生成一個數字< 100000並用輸出

import random 

nb_digits = 5 

for _ in range(10): 
    print("{:0{}}".format(random.randrange(0,10**nb_digits),nb_digits)) 

例如:使用嵌套format前導零

58260 
12986 
69233 
42343 
02760 
58934 
06396 
22262 
07662 
00182