题目分析

在上一题的基础上,增加密码验证,即:
- 某些文件需要密码才能访问。
- 用户有 3 次机会输入正确密码,否则返回到部门输入。
有效的文件、部门及其密码(题目提供的):
文件名 | 部门 | 是否受保护 | 密码 |
filea | dep1 | ❌ 无 | - |
fileb | dep1 | ✅ 是 | pass1 |
filec | dep2 | ❌ 无 | - |
filed | dep2 | ✅ 是 | pass2 |
filea | dep3 | ❌ 无 | - |
filec | dep3 | ❌ 无 | - |
解题逻辑
- 打印
"CHECK FILENAMES"
作为程序启动提示。
- 使用字典
valid_files
存储 各个部门与文件名的对应关系,并记录密码: - 值为
None
或为空
表示该文件不需要密码。 - 存在密码的文件必须输入正确密码才能访问。
- 使用
while True
让用户不断输入部门: - 如果输入
"quit"
,打印"GOODBYE"
并退出程序。 - 如果输入的是无效部门,则重新提示输入。
- 进入文件名输入环节:
- 用户必须输入非空文件名,否则继续要求输入。
- 检查该部门是否有该文件:
- ❌ 没有 → 输出
"文件名 - *is not* a valid filename for - 部门"
并重新输入部门。 - ✅ 有 → 进入密码验证环节:
- 如果该文件需要密码:
- 用户有 3 次输入密码的机会,如果 输入正确,打印
"文件名 - is a valid filename for - 部门"
。 - 如果 3 次机会都失败,直接返回到部门输入环节。
- 如果该文件不需要密码,直接打印
"文件名 - is a valid filename for - 部门"
。
总结:
第六题比前面的题目好玩多了!还是这周学的数据类型,但是是数据结构变了一下。跟着解题逻辑走,问题不大,秒了。