面试题答案
一键面试- 指出可优化点:
- 代码中存在大量重复的
if - elif - else
结构来处理不同用户角色的操作,代码冗余度较高。 - 每次获取用户输入的操作时,没有对输入进行有效性检查,如果用户输入的操作不符合提示的范围,只能在后续的
if - elif - else
结构中判断为无效操作,不够友好。
- 代码中存在大量重复的
- 优化后的代码:
role_actions = {
'admin': ['create','read', 'update', 'delete'],
'editor': ['create','read', 'update'],
'guest': ['read']
}
user_role = input('请输入用户角色(admin, editor, guest):')
if user_role not in role_actions:
print('无效角色')
else:
valid_actions = role_actions[user_role]
action = input(f'请输入操作({", ".join(valid_actions)}):')
if action not in valid_actions:
print('无效操作')
else:
role_map = {
'admin': '管理员',
'editor': '编辑',
'guest': '访客'
}
print(f'{role_map[user_role]}有权{action}')
在优化后的代码中:
- 首先定义了一个字典
role_actions
,用来存储不同用户角色对应的有效操作。这样可以通过字典查询直接获取用户角色对应的操作列表,避免了重复的if - elif - else
结构。 - 在获取用户输入的操作前,先根据用户角色获取有效操作列表,并将其显示给用户,同时检查用户输入的操作是否在有效操作列表内,提高了用户输入的友好性和程序的健壮性。
- 使用一个字典
role_map
来映射用户角色和对应的中文描述,用于输出更友好的提示信息。