我想将userN
与nameDb
进行比较,并将userP
与passDb
进行比较,如果两个字符串都匹配或不匹配,则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 按任意键继续 。 。
答案 0 :(得分:0)
首先始终将open
与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 !")
答案 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
变量。
如果nameList
与X
的字符串匹配,它将在下面的代码下执行。
x