對不起,如果這個問題的答案可能很明顯,但我對Python非常陌生(剛開始閱讀關於不同結構和來自C的其他事情的小文檔)。在練習時,我決定製作一臺自動取款機。然而,在驗證過程中發生了一些奇怪的事情,它將輸入password
與表示用戶數據庫的.txt文件中的密碼進行比較。儘管兩個字符串完全相同(是的,我已經檢查過這兩種字符,都是class str
),但我的腳本完全無法正確比較這兩個字符串!我在看,我確信我錯過了一些明顯的東西,但我無法找到它。Python字符串不等於
這裏的相關位:
class MockUserInterface:
def __init__(self):
ccn = input('Enter your Credit Card Number --> ')
password = input('Enter the corresponding password --> ')
self.db = MockDatabase()
self.processUser(ccn, password)
processUser(self, ccn, password)
通過CCN和密碼VerifyUser獲得False|dictionary
值...
class MockDatabase:
def __init__(self):
self.initdata = open('D:/users.txt', 'r')
self.data = {}
line = 0
for user in self.initdata:
line += 1
splitted_line = user.split(',')
self.data[splitted_line[0]] = {'Name' : splitted_line[1], 'Password' : splitted_line[2], 'Balance' : splitted_line[3], 'id' : line}
self.initdata.close()
def verifyUser(self, ccn, password):
if ccn in self.data:
if ccn == self.data[ccn]['Password']:
return self.data[ccn]
else:
print(password, self.data[ccn]['Password'])
else:
print(self.data)
的users.txt看起來是這樣的:
13376669999,Jack Farenheight,sh11gl3myd1ggl3d4ggl3,90001
10419949001,Sardin Morkin,5h1s1s2w31rd,90102
12345678900,Johnathan Paul,w3ll0fh1sm4j3sty,91235
85423472912,Jacob Shlomi,s3ndm35h3b11m8,-431
59283247532,Anon Tony,r34lp0l1t1k,-9999
運行腳本後,輸出爲:
C:\Python33\python.exe D:/PythonProjects/ATM(caspomat).py
Enter your Credit Card Number --> 13376669999
Enter the corresponding password --> sh11gl3myd1ggl3d4ggl3
sh11gl3myd1ggl3d4ggl3 sh11gl3myd1ggl3d4ggl3
Process finished with exit code 0
再次,抱歉,如果答案很明顯,或者我沒有提供足夠的信息!
什麼是'ProcessUser'方法看起來像你的'MockDatabase'類。這是錯誤發生的地方 – smac89
@mou,實際上OP刪除了他自己的帖子,因爲它看起來像一個意外的行動,所以我把它回滾了。 – lejlot