我正在做一个学校项目-作为其中一部分,我需要检查其用户名是否已存储在文本文件中:
def checkUsername():
userName = str(input("WHAT IS YOUR NAME?"))
if userName in usernames.read():
print("WELCOME BACK" + userName)
print("LET\'S GET STARTED")
return False
else:
usernames.write(userName)
print("WELCOME TO THE SYSTEM!")
return False
尽管我已尽力解决此问题,但似乎无法弄清楚。有人可以帮忙吗?
答案 0 :(得分:2)
您缺少的是首先打开文件进行读取:
def checkUsername():
userName = str(input("WHAT IS YOUR NAME?"))
with open("usernames.txt", 'r') as usernames:
if userName in usernames.read():
print("WELCOME BACK" + userName)
print("LET\'S GET STARTED")
return False
else:
usernames.write(userName)
print("WELCOME TO THE SYSTEM!")
return False
open 会在指定路径下打开文件(将usernames.txt更改为文件的完整路径),“ r”表示该文件将以读取权限打开。这通常有利于使用python的open()方法,该方法需要在读取完文件后关闭文件。
侧面说明:请注意,您在函数的两种情况下都返回了False。
答案 1 :(得分:1)
a if condition else b
)即:
def checkUsername(user):
if user.strip():
with open("myfile") as users:
print(f"WELCOME BACK {user}\nLET'S GET STARTED") if user in users.read() else print(f"WELCOME TO THE SYSTEM!")
else:
print("Error: empty username")
user = input("WHAT IS YOUR NAME?")
checkUsername(user)
答案 2 :(得分:1)
此功能的一个问题是未定义[ignore_older][1]
,另一个问题是usernames
块的两端将返回if
。
解决这些问题的一种方法是
False
上面的代码段在某些方面有所不同,但是它也忽略了您可能还面临的两个可能的错误:输入中的区分大小写(def checkUsername(usernames_file):
fp = open(usernames_file, 'r') # the default mode is 'r', but it's explicit here
usernames = fp.read()
userName = str(input("WHAT IS YOUR NAME?"))
if userName in usernames:
print("WELCOME BACK" + userName)
print("LET\'S GET STARTED")
fp.close()
return True # note, not False
else:
fp.write(userName)
print("WELCOME TO THE SYSTEM!")
fp.close()
return False
行可能是用户想要的),以及input(...)
。希望这会把您推向正确的方向。