You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用append将注册输入存入数组实现登录?解决AttributeError报错

问题分析与修复

错误原因

  1. 变量覆盖导致append报错:在reg函数里,你写了uname = input(...),这会创建一个局部字符串变量,直接覆盖了全局的uname数组。之后调用uname.append(uname)时,实际是在操作字符串,自然会抛出AttributeError。
  2. 登录逻辑错误:log函数里直接拿数组uname和字符串askuname比较,永远不会相等,因为类型都不一样。
  3. 换行符错误:print("/n")里的斜杠方向错了,应该是\n才能实现换行。

修复后的代码

uname = []

def reg():
    # 用不同变量名存储输入的用户名,避免覆盖全局数组
    new_uname = input("save your username here: ")
    uname.append(new_uname)
    print("Welcome user!")

def log():
    print("This is the Login Page")
    askuname = input("please enter your username: ")
    # 判断输入的用户名是否在数组中
    if askuname in uname:
         print("you have successfully logged in!")
    else:
        print("Your username does not exist")

def main():
    print("Hello User, What would you like to do?")
    print("1 - Register your name")
    print("2 - Login")

    x = input("Please select the corresponding number to proceed: ")
    if x == "1":
        print()
        reg()
    elif x == "2":
        # 修正换行符
        print("\n")
        log()
    else:
        print("incorrect input")

main()

额外说明

如果一定要在函数里用同名变量操作全局数组,可以在函数开头加global uname声明,但用不同变量名更清晰,避免混淆。当前代码仅将用户名存储在内存中,程序重启后数据会丢失,若需要持久化存储,可添加文件读写逻辑。

内容的提问来源于stack exchange,提问作者mamamia123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 17:25:20