python - Python - Else 语句随机运行
问题描述
初学者在这里学习 Python。
我正在创建一个员工管理系统项目。下面的基本功能是通过 SSN 搜索员工档案。
问题:以下函数中的 Else 语句有时不起作用。当我第一次运行程序时,它会在列表中找到并显示第一个配置文件。如果我添加另一个员工(单独的函数),并搜索该 SSN,程序将运行 Else 语句,说明未找到它。然后,如果我继续退出程序(再次搜索?否 -> 返回主菜单?否 -> 结束程序),它将打印我正在搜索的第二个配置文件并再次从该点开始,而不是退出程序。我已经打印了employee_list 并确认信息格式正确(每个配置文件都是一个用逗号分隔的字符串)。
有时,它工作得很好;这就是让我绊倒的原因。如果我用#s 剔除 else 语句,那么我的搜索问题为零。它似乎只在我手动添加配置文件后发生,但如果我的配置文件是从我的 .txt 文件导入的,那么这些搜索/工作就很好。但同样,我已经多次打印了我的列表,并且每个条目,无论它是如何到达那里的,格式都是相同的。
我已经在 Python IDLE 和 PyCharm 中尝试过,结果相同。我错过了什么?我对 .txt 文件的写入也不一致(有时它将列表中的所有内容写入 1 行,有时写入多行,有时在项目之间有一个空行)。我提到,如果它可能表明我的 Python 本身被搞砸了。
我知道我的代码可以写得更好,但我就是不明白为什么会出现这些问题。
感谢您的任何帮助。
employee_list = ['Adam,111-11-1111', 'Tom,222-22-2222']
def ssn_search():
print('---------- Search by SSN ----------')
ssn_select = input('Please enter employee SSN: ')
for i in range(0, len(employee_list)):
employee = employee_list[i].split(',')
if ssn_select == employee[1]:
print('Name:', employee[0])
print('SSN:', employee[1])
break
else: #<-------This else statement is the problem
print('That SSN does not exist in this system.')
print('Please try another SSN.')
ssn_again()
search_again = input('Would you like to search for another profile? Y/N: ')
if search_again in ['Y', 'y', 'Yes', 'yes']:
ssn_again()
elif search_again in ['N', 'n', 'No', 'no']:
ssn_edit = input('Would you like to edit this profile? Y/N: ')
if ssn_edit in ['Y', 'y', 'Yes', 'yes']:
edit()
elif ssn_edit in ['N', 'n', 'No', 'no']:
again()
else:
print('That is an invalid selection.')
else:
print('That is an invalid selection.')
ssn_again()```
解决方案
问题是 else 语句在 for 循环内。如果您打印出您的employee[1]
值,您将看到它从列表中选择了 Adam 的 ssn,然后检查 ssn 值,如果您选择了 ssn = '222-22-2222',则进入 else 语句。
您想循环并检查它们,因此您需要更改代码,以使 else 语句位于 for 循环之外,因此 if 语句在转到 else 之前遍历所有值,希望对您有所帮助!
推荐阅读
- python - Linux wifi 提取脚本
- javascript - https 和 wss 在本地 ip 地址中运行
- esp32 - ESP32 IDF Ble Gatt 服务器示例
- arrays - int (*x)[n] = (int (*)[n]) _x 是什么意思?
- graphql - Apollo GraphQL“writeQuery”导致重新渲染到应用程序,从而导致不必要的网络请求
- c++ - MPI_File_write_at :两次写入相同的结构会导致二进制文件中的数据块略有不同
- sql - 仅在事务完成后强制执行数据完整性
- youtube - 有没有办法在 discord.js 中获取链接到用户的 youtube 频道的 ID?
- javascript - 使用filesInput再次执行事件时如何重新生成DIV?
- python - 使用python将txt文件转换为Excel