Python编写用户登录系统:登录系统-Python

关于Python编写用户登录系统的问题,在login the system中经常遇到, 我不擅长编程,所以这就是为什么我在这里寻求帮助。我正在为我的酒店预订系统创建一个登录系统,但我遇到了一些问题。这是我通过帮助别人的代码为登录系统所做的。链接:Python Login and Register System using text files

我不擅长编程,所以这就是为什么我在这里寻求帮助。我正在为我的酒店预订系统创建一个登录系统,但我遇到了一些问题。这是我通过帮助别人的代码为登录系统所做的。链接:Python Login and Register System using text files

def get_existing_users():
with open("login.txt", "r" ) as f:
     for line in f.readlines():
         # This expects each line of a file to be (name, pass) seperated by whitespace
         username, password = line.split(',')
         yield username, password
         
def is_authorized(username, password):
return any((user == (username, password) for user in get_existing_users()))
def user_exists(username):
return any((usr_name == username) for usr_name, _ in get_existing_users())
# above is equivalent of:
#
# for usr_name, _ in get_existing_users():
#     if usr_name == username:
#        return True
# return False
def ask_user_credentials():
count = 0
while count < 3:
    username = input("Enter Username: ")
    password = input("Enter a Password: ")
    if is_authorized(username, password):
        print ("Welcome to the Majestic Hotel Booking system ") + username
        MainMenu()
    if user_exists(username):
        print("The password entered is wrong, please try again")
    print("The username entered is wrong, please try again")
count = count + 1 
def getdetails():
forename = input("Enter forename: ")
surname = input("Enter Surname: ")
year = input("Enter year you are born: ")
if year <= '2004':
    print("You are old enough to register yourself")
    username = forename[0]+surname[0:3]+year[3:4]
    print("Username: ", username)
    
    password = input("Enter a password: ")
    file = open("login.txt","a")
    file.write(username + "," + password + "\n")
    file.close()
    MainMenu()
else:
    print("Sorry you are not old enough to register by yourself")    enter code here
if account == "No":
print(getdetails())
if account == "Yes":
print(ask_user_credentials())

创建或登录帐户后,程序会将它们定向到主菜单,这就是为什么您会在代码中看到 MainMenu()。

我创建了一个帐户,如下所示:

WELCOME TO THE MAJESTIC HOTEL lOGIN SYSTEM
************************************************
Do you have an account? Yes or No: No
Enter forename: Rose
Enter Surname: Moon
Enter year you are born: 2000
You are old enough to register yourself
Username:  RMoo0
Enter a password: door

然后将其保存在名为 login.txt 的文本文件中,如下所示:

RMoo0,door

然而,虽然我创建了一个帐户,它被保存到文本文件,但输出是这样说的:

WELCOME TO THE MAJESTIC HOTEL lOGIN SYSTEM
************************************************
Do you have an account? Yes or No: Yes
Enter Username: RMoo0
Enter a Password: door
The password entered is wrong, please try again
The username entered is wrong, please try again
Enter Username: 

有人可以帮助我,并以一种我会理解的方式解释解决方案。

1

f.readlines()给出 txt 文件的每一行:

line1\n 
line2\n
.
.
. 

因此,当您尝试通过拆分(“,”)获取用户名,密码时,它看起来像这样

("user1", "password1\n")
("user2", "password2\n")
..

在使用“”拆分行之前,请使用rstrip ("\ n ")右剥离每行

def get_existing_users():
    with open("login.txt", "r" ) as f:
         for line in f.readlines():
             username, password = line.rstrip("\n").split(',')    #used rstrip here to remove the right ending "\n"
             yield username, password
0

在解决这类问题时,您应该考虑几个方面,例如转义您的分隔符(当然,如果您对密码进行哈希处理,则没有必要)并且不使用空格,一个非常好的方法,如 linux passwd 文件是在行尾添加分隔符,以避免不同的 EOL 终止符,如\ r,\ n 或\ r\ n 例如:

def get_existing_users():
    """
    This expects each line of a file to be:
    (start of line)name,pass,(end of line)
    """
    with open("login.txt", "r" ) as f:
        for line in f.readlines():
            user = line.split(',')
            yield user[0], user[1]

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(813)
Cer host:将.pfx转换为.cer
上一篇
高防的服务器:OVH专用服务器上的高可用性(ovh dedicated server)
下一篇

相关推荐

  • python浅拷贝和深拷贝区别、原理与实现

    示例示例Python中的浅拷贝和深拷贝是指在复制对象时,复制的结果和原来的对象之间的关系。浅拷贝:浅拷贝只复制一层,也就是说,它只复制最外围的对象,而不复制它包含的对象。如果最外围的对象中包含其他对象,那么这些对象将不会被复制,而是使用原来的对象。…

    2023-05-30 14:25:17
    0 96 59
  • python程序员待遇:Python程序员薪酬最高,收入惊人!

    Python程序员的待遇取决于他们的技能水平和工作经验。一般来说,Python程序员的薪资水平较高,尤其是对于那些有丰富工作经验的Python程序员而言,他们的薪资水平更高。此外,Python程序员还可以获得许多其他福利,包括住房补贴、交通补贴、带薪休假等。…

    2023-06-22 01:21:15
    0 28 72
  • python文本情感分析(含代码示例)

    Python文本情感分析是一种使用自然语言处理技术来分析文本中的情感倾向的过程。它可以帮助我们了解用户对特定主题的看法,从而改善产品和服务。…

    2023-04-23 00:28:07
    0 18 75
  • python字符串拼接数字从零开始

    实例实例Python字符串拼接数字,可以使用format()函数或者%运算符来实现。代码实例:…

    2023-08-20 08:25:28
    0 62 75
  • python中import re:如何使用Python中的re模块进行正则表达式匹配

    import re 是Python中正则表达式模块,可以用来处理字符串。它提供了一系列的函数,可以用来查找、替换和分割字符串,以及检查字符串是否符合特定的格式。…

    2023-05-02 10:25:33
    0 40 26
  • python是面向Python的优势

    Python是一种面向对象的编程语言,它提供了一种简单而强大的方法来创建可重用的代码。它使用类和对象来实现面向对象编程,允许程序员将代码封装在类中,以便在不同的程序中重复使用。…

    2023-05-02 04:34:35
    0 10 22
  • python程序包:如何使用Python程序包构建高效的应用程序

    Python程序包是一种用于组织Python模块的形式,它允许程序员将相关的模块组合在一起,以便更轻松地管理和使用它们。Python程序包可以包含函数、类、变量和其他Python代码,以帮助简化程序的开发。…

    2024-03-20 06:08:18
    0 76 71
  • python中的%d:%d个原因你应该学习Python

    示例示例%d 是Python中格式化字符串的占位符,表示用整数来填充。示例:…

    2023-04-25 12:42:58
    0 94 62

发表评论

登录 后才能评论

评论列表(9条)