Python基础库存管理系统display_users函数变量报错求助
问题根因
- 核心逻辑错误:你在循环中仅读取了
user_names字段,没有从文件中读取user_numbers、user_desig两个字段的值,就直接调用这两个未定义变量的rstrip方法,触发了变量未定义相关报错 - 全局变量设置无效:全局作用域中从未定义过
user_numbers等变量,强行设置全局引用自然会抛出NameError,该问题和变量作用域无关,不需要设置全局变量
修复方案
首先确认你的all_users.txt存储格式为:每个用户占用3行,依次为用户名、手机号、职位,用户之间可加空行分隔。修复后的代码如下:
def display_users(): # 用with上下文管理器自动管理文件关闭,避免资源泄漏 with open('all_users.txt', 'r', encoding='utf-8') as all_users: print('All Current User') print('<----------------->') while True: # 依次读取三个字段 user_names = all_users.readline() user_numbers = all_users.readline() user_desig = all_users.readline() # 读到文件末尾直接退出循环 if not user_names or not user_numbers or not user_desig: break # 先去除换行符再输出 user_names = user_names.rstrip('\n') user_numbers = user_numbers.rstrip('\n') user_desig = user_desig.rstrip('\n') # 跳过空行块(适配用户间有空行分隔的文件格式) if user_names == '' and user_numbers == '' and user_desig == '': continue print('User Names: ', user_names) print('User PH Numbers: ', user_numbers) print('User Designations: ', user_desig) print('<---------->')
额外优化建议
如果后续需要调整存储格式,推荐每个用户占用一行、用逗号/制表符分隔不同字段,读取时直接按分隔符拆分即可,逻辑更简单不容易出错。
内容的提问来源于stack exchange,提问作者Kaib3r
相关产品推荐
相关产品推荐

