鱼C论坛

 找回密码
 立即注册
查看: 1818|回复: 3

[已解决]用土法实现41课动动手注册登录 这个代码有问题吗 用蠢法实现功能是浪费时机吗?

[复制链接]
发表于 2023-6-23 14:37:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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程序结束后 所有用户就消失了
最佳答案
2023-6-23 14:38:48
这段代码实现了一个简单的注册登录系统,但是存在一些问题和改进的空间。

问题:
1. 用户信息没有进行持久化保存,程序结束后所有用户就消失了。
2. 注册时没有进行重复用户名的验证,可能会导致用户名的重复。
3. 密码验证部分只判断了密码是否在密码列表中,没有考虑到密码与用户名的对应关系。

改进建议:
1. 可以使用文件或数据库等方式来保存用户信息,使用户数据持久化。
2. 注册时可以添加用户名的唯一性验证,确保用户名不重复。
3. 可以将用户名和密码存储为字典的键值对,便于后续验证时的匹配。
4. 可以考虑使用函数和模块化编程,提高代码的可读性和可维护性。
土方法实现注册登录.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-23 14:38:48 | 显示全部楼层    本楼为最佳答案   
这段代码实现了一个简单的注册登录系统,但是存在一些问题和改进的空间。

问题:
1. 用户信息没有进行持久化保存,程序结束后所有用户就消失了。
2. 注册时没有进行重复用户名的验证,可能会导致用户名的重复。
3. 密码验证部分只判断了密码是否在密码列表中,没有考虑到密码与用户名的对应关系。

改进建议:
1. 可以使用文件或数据库等方式来保存用户信息,使用户数据持久化。
2. 注册时可以添加用户名的唯一性验证,确保用户名不重复。
3. 可以将用户名和密码存储为字典的键值对,便于后续验证时的匹配。
4. 可以考虑使用函数和模块化编程,提高代码的可读性和可维护性。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-23 14:47:59 | 显示全部楼层
陶远航 发表于 2023-6-23 14:38
这段代码实现了一个简单的注册登录系统,但是存在一些问题和改进的空间。

问题:

密码的匹配 首先判断输入密码是否在列表里 没在的话直接判断为错误 在的话再通过下标匹配用户名和密码
才学到函数 数据库那些还不会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-23 14:51:46 | 显示全部楼层
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[namelist_index]:   # 通过下标匹配用户名和密码
            print('Welcome home!')
        else:
            print('Error: Incorrect password.')

    elif x == 3:   # 退出
        break

    else:
        print('Error: Invalid choice.')

print('See you.')
这样修改后,当用户选择登录时,首先会验证用户名是否存在,然后再通过下标匹配用户名和密码进行验证。这样可以避免密码列表中的密码与用户名无法匹配的问题。

关于函数和数据库的学习,它们是编程中非常重要的概念和工具。学习函数可以帮助你更好地组织和重用代码,而学习数据库可以帮助你存储和管理大量数据。它们可以提高代码的可读性、可维护性和功能扩展性。你可以逐步学习它们,通过实践项目和参考文档来提升你的编程技能。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 17:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表