python - 如何比较文本文件中的输入字符串?
问题描述
我想比较userN
和nameDb
,userP
如果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 按任意键继续。. .
解决方案
首先始终使用open
with 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 !")
推荐阅读
- android - Gatt 服务器服务列表为空
- javascript - 在 setState 中反应访问范围外的变量
- jekyll - Jekyll - 无法获取 url 和作者姓名
- javascript - 无法使用 Math.round 或 Math.ceil 对数字进行四舍五入
- asp.net - 对 asp.net 使用引导程序所需的验证,而不是 RequiredFieldvalidator
- c# - WPF 将文本写入图像并发送到打印机
- javascript - 如何使用 javascript 中的搜索文本对数组进行排序?
- python - 基于 Pandas 中唯一编号的两个 csv 文件之间的日期差异
- google-bigquery - Bigquery 查询 - 对分组数据的子选择进行事件计数
- mysql - 为什么此查询返回错误并且没有寄存器?