我正在尝试练习python技能,我知道我对如何处理文件有点陌生,所以我决定自学。该代码基本上是建立一个帐户,登录并检查用户并通过存储在文件中的密码。我知道我的用户和通行证正在追加并读取文件。我遇到的问题是在我的if语句中。我正在使用if i == user
,但==表示文字。因此,我尝试仅使用一个=检查是否有一个变量=用户输入的变量,当我这样做时,出现语法错误。我的最后一个问题是我在运行代码时,在其他语句中说用户名不正确,在控制台中说了2到3次。这使我感到困惑,因为else语句之外的任何地方都不是它们的while或for循环。如果有人可以解释在用户名和密码字符串正确时如何使我的if语句被执行。那太好了。另外,如果您知道我的控制台为什么要执行else:无故打印3次(用户名不正确)。我很好奇知道
我尝试在for循环中打印出变量,并且确实在文件中打印出了字符串。
u = open('users.txt', 'a+')
p = open('pass.txt', 'a+')
does_acc = input('Do you have a account? ')
if does_acc == 'no' or does_acc == 'No':
new_user = input('Username: ')
u.write(new_user + '\n')
new_pass = input('Password: ')
p.write(new_pass + '\n')
sign_in = input('Would you like to sign in? ')
if sign_in == 'yes' or sign_in == 'Yes':
n = open('users.txt', 'r')
m = open('pass.txt', 'r')
lines = n.readlines()
line = m.readlines()
user = input('Username: ')
for i in lines:
print(i)
if i = user:
password = input('Password: ')
for x in lines:
if password == x:
print('secret file opened')
else:
print("{} is not a valid password.").format(password)
else:
print('Username incorrect.')
else:
print('Have a nice day.')
u.close()
p.close()
Do you have a account? yes
Would you like to sign in? yes
Bob
Username: Bob
Username incorrect.
Username incorrect.
答案 0 :(得分:2)
if i = user:
应替换为:if i == user:
(双等号)for x in lines:
尝试将密码与用户名进行匹配。看起来很奇怪。print("{} is not a valid password.").format(password)
的括号顺序错误,应将"string".format(parm)
括在print( .... )
中,反之亦然。总而言之,我希望这样重写您的密码匹配部分:
with open( 'passwords.txt' ) as fin :
passwords = [p.strip() for p in fin.readlines()]
with open( 'users.txt' ) as fin :
users = [u.strip() for u in fin.readlines()]
user = input( 'User: ' )
password = input( 'Password: ' )
if [user, password] in zip( users, passwords ) :
print( "You're welcome!" )
else :
print( "Go away!" )
或者类似的东西。
答案 1 :(得分:0)
if i = user
应该是if i == user
,并且您要打开同一文件两次,一次是在文件开头,另一次是在if sign_in == 'yes' or sign_in == 'Yes':
之后