用土法实现41课动动手注册登录 这个代码有问题吗 用蠢法实现功能是浪费时机吗?
本帖最后由 mumei2018 于 2023-6-23 14:38 编辑用土法实现41课动动手注册登录 这个代码有问题吗?算是成功实现功能了吗? 老是爱用蠢法实现功能是浪费时机吗?
print('welcome to FishC\n====================\n1.sign up\n2.sign in\n3.exit')
x = int(input('enter your choice:'))
namelist = []#创建用户列表
passwordlist = []#创建密码列表
while x != 3:#循环
if x == 1:
print('====================')
name = input('enter your user name:')
namelist.append(name)#增加用户
print(f'your user name is {name}.')
print(namelist)#没用的 看看而已
passw = input('enter your password:')
print('congratulations')
passwordlist.append(passw)#增加用户对应密码
print(passwordlist)#没用的 看看而已
print('====================')
print('welcome to FishC\n====================\n1.sign up\n2.sign in\n3.exit')
x = int(input('enter your choice:'))
if x == 2:
named = input('enter your user name:')
if named not in namelist:#是否有该用户
print('erro : user nor found.')
else:
namelist_index = namelist.index(named)#查找用户名下标以匹配密码
print(namelist_index)#没用的 看看而已
passwd = input('enter your password:')
if passwd in passwordlist:#检查输入密码是否在密码列表内
passwordlist_index = passwordlist.index(passwd)#查找输入密码下标
if passwordlist_index == namelist_index:#与用户名匹配
print('welcome home')
else:#匹配不成功
print('try again.')
else:#密码完全错误
print('try again')
print('see you.')#指令为3 再见
#在程序结束前可创建多个用户 问题是第一次没法直接进入指令2用户登录、 指令为3程序结束后 所有用户就消失了 这段代码实现了一个简单的注册登录系统,但是存在一些问题和改进的空间。
问题:
1. 用户信息没有进行持久化保存,程序结束后所有用户就消失了。
2. 注册时没有进行重复用户名的验证,可能会导致用户名的重复。
3. 密码验证部分只判断了密码是否在密码列表中,没有考虑到密码与用户名的对应关系。
改进建议:
1. 可以使用文件或数据库等方式来保存用户信息,使用户数据持久化。
2. 注册时可以添加用户名的唯一性验证,确保用户名不重复。
3. 可以将用户名和密码存储为字典的键值对,便于后续验证时的匹配。
4. 可以考虑使用函数和模块化编程,提高代码的可读性和可维护性。
陶远航 发表于 2023-6-23 14:38
这段代码实现了一个简单的注册登录系统,但是存在一些问题和改进的空间。
问题:
密码的匹配 首先判断输入密码是否在列表里 没在的话直接判断为错误 在的话再通过下标匹配用户名和密码
才学到函数 数据库那些还不会{:5_100:} mumei2018 发表于 2023-6-23 14:47
密码的匹配 首先判断输入密码是否在列表里 没在的话直接判断为错误 在的话再通过下标匹配用户名和密码
...
根据你的描述,密码的匹配部分存在一些问题。下面是对代码进行修改的建议:
print('Welcome to FishC\n====================\n1. Sign up\n2. Sign in\n3. Exit')
namelist = [] # 创建用户名列表
passwordlist = [] # 创建密码列表
while True: # 使用无限循环,直到用户选择退出
x = int(input('Enter your choice: '))
if x == 1: # 注册
print('====================')
name = input('Enter your username: ')
if name in namelist:# 验证用户名是否已存在
print('Error: Username already exists.')
continue
namelist.append(name)# 增加用户名
print(f'Your username is {name}.')
passw = input('Enter your password: ')
passwordlist.append(passw)# 增加用户对应密码
print('Congratulations! You have signed up successfully.')
print('====================')
elif x == 2: # 登录
named = input('Enter your username: ')
if named not in namelist:# 验证用户名是否存在
print('Error: Username not found.')
continue
passwd = input('Enter your password: ')
namelist_index = namelist.index(named) # 查找用户名下标以匹配密码
if passwd == passwordlist: # 通过下标匹配用户名和密码
print('Welcome home!')
else:
print('Error: Incorrect password.')
elif x == 3: # 退出
break
else:
print('Error: Invalid choice.')
print('See you.')
这样修改后,当用户选择登录时,首先会验证用户名是否存在,然后再通过下标匹配用户名和密码进行验证。这样可以避免密码列表中的密码与用户名无法匹配的问题。
关于函数和数据库的学习,它们是编程中非常重要的概念和工具。学习函数可以帮助你更好地组织和重用代码,而学习数据库可以帮助你存储和管理大量数据。它们可以提高代码的可读性、可维护性和功能扩展性。你可以逐步学习它们,通过实践项目和参考文档来提升你的编程技能。
页:
[1]