Python代码报错NameError: name 'assign_username' is not defined求助
解决
NameError: name 'assign_username' is not defined问题 问题原因
assign_username、task_name等变量仅在menu == "a"的分支内部定义,属于局部变量。如果程序直接进入menu == "va"分支,这些变量从未被创建,因此触发NameError——简单说就是你没先执行a操作生成这些变量,直接跑va操作自然找不到它们。
解决方案
根据需求,有几种处理方式:
1. 检查变量是否存在,不存在则提示用户
在va分支里先判断变量是否已定义,未定义则引导用户先执行添加操作:
elif menu == "va": try: print(f"负责人: {assign_username}") print(f"任务: {task_name}") print(f"任务描述: {task_desc}") print(f"分配日期: {current_date}") print(f"截止日期: {task_due_date}") print(f"任务完成状态: {task_completion}") except NameError: print("请先执行'a'操作添加任务信息!")
2. 提前初始化变量
在所有分支代码前,先把需要的变量初始化为空值,避免未定义的情况:
# 提前初始化所有任务相关变量 assign_username = "" task_name = "" task_desc = "" current_date = "" task_due_date = "" task_completion = "" # 后续分支代码 elif menu == "a": assign_username = input("请输入任务负责人的用户名:\n") task_name = input("请输入任务标题:\n") task_desc = input("请输入任务描述:\n") task_due_date = input("请输入任务截止日期:\n") current_date = input("请输入当前日期:\n") task_completion = input("任务是否完成?是/否:\n") f2.write(f'\n{assign_username}, {task_name}, {task_desc}, {current_date}, {task_due_date}, {task_completion}') elif menu == "va": if not assign_username: print("还未添加任务信息,请先执行'a'操作!") else: print(f"负责人: {assign_username}") print(f"任务: {task_name}") print(f"任务描述: {task_desc}") print(f"分配日期: {current_date}") print(f"截止日期: {task_due_date}") print(f"任务完成状态: {task_completion}")
3. 从文件读取任务信息(更合理的方案)
如果va是要查看已保存到文件的任务,而非当前会话刚输入的内容,应该直接从文件读取数据——毕竟程序重启后,分支内的变量会消失,文件才是持久化存储的载体:
elif menu == "va": f2.seek(0) # 移动到文件开头位置 task_lines = f2.readlines() if not task_lines: print("暂无任务信息!") else: # 读取最后一条任务(可根据需求修改为遍历所有任务) last_task = task_lines[-1].strip() # 分割文件中存储的任务数据 assign_username, task_name, task_desc, current_date, task_due_date, task_completion = last_task.split(", ") print(f"负责人: {assign_username}") print(f"任务: {task_name}") print(f"任务描述: {task_desc}") print(f"分配日期: {current_date}") print(f"截止日期: {task_due_date}") print(f"任务完成状态: {task_completion}")
内容的提问来源于stack exchange,提问作者Maverick45
相关产品推荐
相关产品推荐

