检查输入的引脚(check_pin)==正确的引脚(引脚)
时,我遇到了问题check_pin和pin的测试输出是相同的,但它不会将它们视为等效(第4行)
代码:
pin_check = input("Please input your 4 digit PIN number: ")
print("g"+str(base64.b64encode(bytes(pin_check, "utf-8"))))
print(pin)
if "g"+str(base64.b64encode(bytes(pin_check, "utf-8"))) == pin:
y = 0
else:
v = v + 1
y = int(y) - 1
print("Incorrect PIN,",y,"attempts remaining.\n")
输出:
Please input your 4 digit PIN number: 1234 [user input, correct pin[1234]]
gb'MTIzNA==' [stored pin]
gb'MTIzNA==' [user input pin]
Incorrect PIN, 2 attempts remaining. [it should set y = 0, not print this line]
存储引脚:Pin.txt包含以下几行:gb' MTIzNA =='
import linecache
fo = open("Pin.txt", "r")
pin = linecache.getline('Pin.txt', int(card_no))
print(pin)
fo.close()
答案 0 :(得分:0)
根据您从文件中读取的方式,请注意linecache.getline
也将读取行尾的换行符。因此,pin
的内容实际上是"gb'MTIzNA=='\n"
,并且不等于pin_check
的base64编码值。
事实上,在您的示例输出中,您在第三行和第五行之间有一个额外的换行符(因为第二行,从代码判断,实际上是编码的用户输入引脚)。
您可能想要做的是
pin = linecache.getline('Pin.txt', int(card_no)).strip()
就是说,剥去你刚读过的那条线。