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



我想比较userNnameDb以及userPpassDb,如果两个字符串都匹配或不匹配,则0上的loginResult将变为1

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

[Edit2]:我在login函数中比较字符串的方式似乎有问题。即使这两个字符串都匹配,它仍然会转到else语句。导致CCD_ 10始终为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秒按任意键继续。

首先始终将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 !")

您正试图从函数中为全局变量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 !")

你能打印nameDb和passDb是什么类型的数据吗?如果是列表,请使用"in"而不是"=="。

使用for循环,它将nameList中的所有内容打印为X变量。如果xuserN的字符串匹配,它就会执行下面的代码。

userN = input("Username:")
userP = input("Password:")
with open("file1", mode ="r") as nameDb:
nameList = nameDb.read().splitlines()
with open("file2", mode ="r") as passDb:
passList = passDb.read().splitlines() 
#using .read.splitlines removes "n" in the output
for x in nameList:
if x == userN:
loginName = 1
break
else:
loginName = 0

最新更新