首页 > 解决方案 > 使用 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()

标签: pythonloopswhile-loop

解决方案


像这样的东西应该工作:

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

推荐阅读