我寫了一個密碼生成器,我遇到了這個煩人的問題,它是在同一行重複一個數字或字母。用戶給程序一個格式,說明他們希望如何生成他們的密碼,例如「C @@ d %%%」 其中@只是字母,而%只是數字,用戶還輸入數字和字母以生成密碼,那麼該程序是假設打印出像cold123這樣的東西,而是打印出cood111或clld111,我會在下面發佈我的代碼片段,但請不要說壞話,我對python相當陌生,自學成才,幾個月後進入蟒蛇體驗。如何阻止我的程序生成相同的密鑰?
class G()
.
.
.
# self.forms is the format the user input they can input things such as [email protected]@d%%%
# where @ is only letters and where % is only numbers
# self.Bank is a list where generated things go
AlphaB = [] #list Of All Of The Positions That have The @ sign in The self.forms
NumB = [] #list of All of the positions that have a % sign
for char in self.forms:
if char == '@':
EOL=(self.Position) # Positions End Of Line
Loc = self.forms[EOL] # Letter
AlphaB.append(EOL)
if char == '%':
EOL=(self.Position)
Loc = self.forms[EOL]
NumB.append(EOL)
self.Position+=1 # Move right a position
for pos in AlphaB:
for letter in self.alphas: #letters in The User Inputs
GenPass=(self.forms.replace(self.forms[pos],letter))
#Not Fully Formatted yet, because Only The letter been formatted
if GenPass.find('%'):
for Pos in NumB:
for number in self.ints:
GenPass=(GenPass.replace(GenPass[Pos],number))
if GenPass not in self.Bank:
#Cood111
print (GenPass)
self.Bank.append(GenPass)
else:
if GenPass not in self.Bank:
print (GenPass)
self.Bank.append(GenPass)
這是一個練習,對不對? – l0b0
我認爲問題是'replace()'函數我相信如果你傳遞第三個參數',1',那麼只有第一個匹配項會被替換,而不是所有的匹配項 – depperm