python - 使用 while 循环拒绝重复的新用户名
问题描述
我正在尝试创建一个简单的新用户注册功能。应该有一个评估用户输入的新用户名的过程,该过程检查外部文件中的重复项并拒绝它们。该文件user.txt
只是由逗号分隔的用户名和密码的逐行列表。
user
问题:代码一直忽略我将每个新用户输入变量与存储在文本文件(line[0]
)中的用户名匹配的努力
“user.txt”的内容如下:
admin, admin
admin1, admin1
admin2, admin2
等
任何帮助表示感谢
def reg_user():
if username == "admin" and login == True:
registry = open("user.txt", "r+")
# Requests username and prevents duplicates
for line in registry:
line = line.split(", ")
while registry:
user = input("Please enter a username to register:\n")
if user == line[0]:
print("Sorry, that username is taken. Try a different one.")
password = input("Please enter a password to register:\n")
passcheck = input("Please re-enter your password:\n")
if password != passcheck:
print("Your password doesn't match. Please re-enter your password.")
else:
print("Thanks. You're registered")
user = registry.write("\n" + user + ", " + password)
registry.close()
解决方案
像这样的东西应该工作:
username = 'admin'
login = True
if username == "admin" and login == True:
file = open("user.txt", "r+")
registry = file.read().split('\n')
# Requests username and prevents duplicates
ok = False
while not ok:
user = input("Please enter a username to register:\n")
ok = True
for line in registry:
if user == line.split(', ')[0]:
print("Sorry, that username is taken. Try a different one.")
ok = False
password = input("Please enter a password to register:\n")
passcheck = input("Please re-enter your password:\n")
if password != passcheck:
print("Your password doesn't match. Please re-enter your password.")
else:
print("Thanks. You're registered")
user = file.write("\n" + user + ", " + password)
file.close()
用户.txt 文件:
a, foo
e, pass
交互示例:
Please enter a username to register:
a
Sorry, that username is taken. Try a different one.
Please enter a username to register:
e
Sorry, that username is taken. Try a different one.
Please enter a username to register:
f
Please enter a password to register:
pass1
Please re-enter your password:
pass1
Thanks. You're registered
推荐阅读
- javascript-objects - 为什么 +!!{} 等于 1?
- sql - 如果最早的数据超过 60 天,我如何从最多 60 天的数据中提取数据,如果不是,那么直到该日期
- ios - NSDictionary - 将相同的 id'ed 元素堆叠到另一个字典中
- spring - 多对多使用复合键:如何在实体之间的表中添加元素?
- c# - 使用 AutoReverse 时如何在 DoubleAnimation 期间创建延迟?
- velo - 如何从我的 Corvid 站点公开 API?
- javascript - 如何通过csjs触发驻留在对话框中的xe:namepicker?
- windows - 权限被拒绝:稍后重试 ssh 中的错误
- javascript - 如何在ar-js中将点击事件添加到a-image
- javascript - 动态生成的 textarea (JQuery) 以适应初始内容大小