首页 > 解决方案 > 如何比较文本文件中的输入字符串?

问题描述

我想比较userNnameDbuserP如果passDb两个字符串都匹配或不匹配,loginResult将更改为 0 上的 1。(其中 1 是正确的,0 是错误的)

[Edit1]:初始loginResult由0改为1,在if elselogin函数下添加2条打印语句

login[Edit2]:我在函数中比较字符串的方式似乎存在问题。即使两个字符串都匹配,它仍然会进入else语句。导致loginResult始终为 0。

loginResult = 1

userN = input("Username:")
userP = input("Password:")

def login(userN,userP):
    global = loginResult
    nameDb = open("files1", mode ="r")
    passDb = open("files2", mode ="r")

    print("Textfile username:",nameDb.readline())
    print("Textfile password:",passDb.readline())


    if(userN == nameDb.readline() and userP == passDb.readline()):
        loginResult = 1
        print("Ding")
        return
    else:
        loginResult = 0
        print("Dong")

login(userN, userP)

if(loginResult == 1):
    print("Welcome !")
elif(loginResult == 0):*emphasized text*
    print("Error !")

输出:

用户名:Kelvin12

密码:Maxi12

文本文件用户名:Kelvin12

文本文件密码:Maxi12

错误 !

进程返回 0 (0x0) 执行时间:4.688 s 按任意键继续。. .

标签: pythonpython-3.6

解决方案


首先始终使用openwith with,然后修剪并替换字符串中的换行符:

loginResult = 0

userN = input("Username:")
userP = input("Password:")

def login(userN,userP):
    with open("files1", mode ="r") as nameDb, open("files2", mode ="r") as passDb:
        if(userN == nameDb.readline().strip().replace('\n', '') and userP == passDb.readline().strip().replace('\n', '')):
            loginResult = 1
            return
        else:
            loginResult = 0


login(userN, userP)

if(loginResult == 1):
    print("Welcome !")
elif(loginResult == 0):
    print("Error !")

推荐阅读