You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python登录注册功能异常:始终提示‘Incorrect login or password’

Python登录注册功能异常:始终提示‘Incorrect login or password’

嘿,我仔细看了你的代码,发现几个关键问题导致登录一直失败,咱们一步步拆解解决:

1. 文件指针位置搞反了

你用a+模式打开login.txt和passw.txt的时候,文件指针默认停在文件末尾。这时候直接调用login.read(),根本读不到之前注册的内容(从末尾开始读,啥也没有),自然就会判断成“账号或密码错误”。

解决办法:登录时打开文件后,先调用seek(0)把指针移到文件开头,再读取内容。

2. 注册内容没分隔,信息全乱套

现在注册时直接把登录名和密码写入文件,比如第一个用户注册alice和1234,文件里就是alice和1234;如果再注册bob,文件会变成alicebob和12345678,完全没法区分不同用户的信息,登录时自然匹配不上。

解决办法:注册时给每个登录名和密码加个换行符\n,让每个用户的信息单独占一行,方便后续读取匹配。

3. 文件关闭方式不够稳妥

你手动调用close()的方式很容易出问题,比如代码执行到一半报错,文件可能就没关上。推荐用Python的with语句,它会自动帮你管理文件的打开和关闭,省心又安全。

修改后的完整代码

state = 0
print("What do you want to do?")
print("1. Log in")
print("2. Register")
dec = int(input())

if dec == 1:
    # 用with自动管理文件,先把指针移到开头再读
    with open("login.txt", "a+") as login, open("passw.txt", "a+") as passw:
        login.seek(0)
        passw.seek(0)
        print("Enter your login:")
        log = input().strip()
        print("Enter your password:")
        pas = input().strip()
        
        # 读取所有已注册的账号密码(按行处理)
        logins = [line.strip() for line in login.readlines()]
        passwords = [line.strip() for line in passw.readlines()]
        
        # 检查输入的账号密码是否匹配
        if log in logins and pas in passwords and logins.index(log) == passwords.index(pas):
            print("You are logged in")
            state = 1
        else:
            print("Incorrect login or password")
            state = 0

elif dec == 2:
    with open("login.txt", "a") as login, open("passw.txt", "a") as passw:
        print("Enter your login:")
        log = input().strip()
        print("Enter your password:")
        pas = input().strip()
        # 加换行符分隔每个用户的信息
        login.write(log + "\n")
        passw.write(pas + "\n")
        print("You are registered")
        state = 1

if state == 1:
    print("What do you want to do?")
    print("1. Read the file")
    print("2. Write to the file")
    print("3. Log out")
    dec = int(input())
    if dec == 1:
        with open("supasecret.txt", "r") as file:
            print(file.read())
    elif dec == 2:
        # 修正了原代码里的文件名拼写错误:supasceret → supasecret
        with open("supasecret.txt", "a+") as file:
            print("Enter the text:")
            text = input()
            file.write(text + "\n")  # 加换行符避免内容挤在一起
    elif dec == 3:
        state = 0
        print("You are logged out")

额外提个小细节

你原代码里读取和写入的文件名不一致(supasceret.txt和supasecret.txt),我已经在修改后的代码里统一成supasecret.txt了,避免后续操作文件时找不到内容。

现在你再试试注册新账号然后登录,应该就能正常进入后续的文件操作环节啦!

备注:内容来源于stack exchange,提问作者KosteQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 15:24:50