首页 > 解决方案 > 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()```

标签: pythonif-statementdebugging

解决方案


问题是 else 语句在 for 循环内。如果您打印出您的employee[1]值,您将看到它从列表中选择了 Adam 的 ssn,然后检查 ssn 值,如果您选择了 ssn = '222-22-2222',则进入 else 语句。

您想循环并检查它们,因此您需要更改代码,以使 else 语句位于 for 循环之外,因此 if 语句在转到 else 之前遍历所有值,希望对您有所帮助!


推荐阅读