无法使用txt fi中的数据执行if语句

2024-09-24 22:29:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图做一个基本的程序,让用户输入用户名和密码,如果它在一个文件中看到一个输出'访问授权',但密码不会匹配时,与文件数据进行比较,即使他们是相同的

我已经尝试设置数据保存密码作为一个变量,但没有工作

username = str(input('What is your username'))
password = str(input('What is your password'))
accountlogin = 0
file = open('login.txt','r')

for line in file:
   seperate = line.split(',')
   print(seperate[0])
   if username == seperate[0]:
      accountlogin = accountlogin + 1
for line in file:
   if password == seperate[1]:
      accountlogin = accountl`enter code here`ogin + 1
print(accountlogin)
if accountlogin == 2:
   print('Access Granted')

正确的用户名,使其等于3,这样密码位就不能工作


Tags: 文件数据密码inputiflineusernamepassword
2条回答

循环两次有两个问题:

  • 在第一个循环之后,文件光标位于文件的末尾。没什么可吃的了。你可以从头开始,但是…

  • 检查用户名是否存在于文件中的任何位置,密码是否存在于文件中的任何位置。相反,您应该让它们一起存在于相同的记录中。所以把这两个条件放在同一个循环中

像这样:

username = str(input('What is your username'))
password = str(input('What is your password'))
accountlogin = 0
file = open('login.txt','r')

for line in file:
   seperate = line.split(',')
   print(seperate[0])
   if username == seperate[0]:
      accountlogin = accountlogin + 1
   if password == seperate[1]:
      accountlogin = accountlogin + 1
print(accountlogin)
if accountlogin == 2:
   print('Access Granted')

甚至只是:

username = str(input('What is your username'))
password = str(input('What is your password'))
file = open('login.txt','r')

for line in file:
   separate = line.split(',')
   print(separate[0])
   if username == separate[0] and password == separate[1]:
      print('Access Granted')
      break

另外,必须注意不要将密码存储在纯文本中

您可以使用下面的单个循环来完成

username = input('What is your username?')
password = input('What is your password?')
with open('login.txt','r') as f:
    for line in f:
       user_txt, pass_txt, *_ = line.split(',')
       print(user_txt)
       if username == user_txt and password == pass_txt:
          print('Access Granted')
          break

input()返回str,因此使用str()将其转换为字符串是多余的(不是必需的)。我还使用with关键字打开login.txt文件Read此线程了解with 接下来,我们将拆分行,并将前两个逗号分隔的字符串作为username&;分别从该行输入密码,并忽略该行中以逗号分隔的其余字符串(如果有)

相关问题 更多 >