如何比较文本文件中的输入字符串?

时间:2020-03-20 09:00:07

标签: python python-3.6

我想将userNnameDb进行比较,并将userPpassDb进行比较,如果两个字符串都匹配或不匹配,则loginResult将变为1 on0。(其中1为正确,0为false)

[Edit1]:将初始loginResult从0更改为1,在login函数下的if else中添加了2条打印语句

[Edit2]:似乎我在login函数中比较字符串的方式可能有问题。即使两个字符串都匹配,它仍将转到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

dong

错误!

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

4 个答案:

答案 0 :(得分:0)

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

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 !")

答案 1 :(得分:0)

您正在尝试从函数内部为全局变量loginResult分配其他值。如果要这样做,则必须使用global关键字。您可以在原始代码中仅添加一行:

loginResult = 1

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

def login(userN,userP):

    global loginResult  # now loginResult is global, not local

    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 !")

答案 2 :(得分:0)

您可以打印哪种类型的数据nameDb和passDb?如果是列表,请使用“ in”而不是“ ==”。

答案 3 :(得分:0)

使用for循环将int中的所有内容打印为arrHEAP变量。 如果nameListX的字符串匹配,它将在下面的代码下执行。

x