首页 > 解决方案 > 如何分别保存循环中的结果?

问题描述

我需要单独保存我的结果,以便我可以运行我的其余代码。

基本上,我必须做一个贷款项目,每种贷款的每月还款额都不同。现在的问题是每个用户可能有不同数量的不同贷款。例如,一位用户可能只有房屋贷款 (HL),而一位用户可能有 3 种不同的贷款。在我的代码中,我需要包含这将返回该特定类型贷款的每月还款额:

def meet_criteria(account_no):
    if getsaving(account_no) in ["HL"]:
        HLmonthly()
    else:
        if getsaving(account_no) in ["RL"]:
            RLmonthly()
        else:
            if getsaving(account_no) in ["EL"]:
                ELmonthly()

我还需要这样总结还款金额:

total_monthly_debt = repay1 + repay2 + repay3

但是,现在,我无法继续执行上述代码,因为我无法将结果分开以获得我需要调用满足条件()的“HL”、“RL”和“EL”。为了显示所有结果,我使用了这样的循环:

def getsaving(account_no): 
    query = """\
        select SUBSTRING(LoanID, 1, 2)
        from Account_Delinquency
        where Account_Number = '{}'
        """ .format(account_no)

    return (execute_read_query (conn, query))


a = getsaving(account_no)

mylist = []
for i in a:
    mylist.append(i)

我试图把它放在一个列表中,以便我可以将它分开,但显然,它不是那样工作的。这是我学会的一种检查列表是否为空的方法,但正如预期的那样,它无法检查列表的某些部分是否为空并且会返回错误。它还涉及一些不理想的硬编码。

if mylist[1][0]:
    loan1 = mylist[1][0]
else:
    pass

因此,我想看看是否有任何其他方法可以使用,以便我可以获得例如 Loan1 = HL、Loan2 = nothing、Loan3 = RL 等的结果。我也将不胜感激任何有关更改的建议据我所知,我的代码并不是最理想的。谢谢!

标签: pythonlistfor-loopvisual-studio-code

解决方案


meet_criteria似乎不正确(没有返回值)

def meet_criteria(account_no):
    if getsaving(account_no) in ["HL"]:
        HLmonthly()
    else:
        if getsaving(account_no) in ["RL"]:
            RLmonthly()
        else:
            if getsaving(account_no) in ["EL"]:
                ELmonthly()

可能

def meet_criteria(account_no):
    if getsaving(account_no) == "HL":
        HLmonthly()
    elif getsaving(account_no) == "RL":
        RLmonthly()
    elif getsaving(account_no) == "EL":
        ELmonthly()

顺便提一句。我还没有完全理解你的问题,但我认为你想meet_criteria返回一些东西,(如果你提供了如何使用这个函数,我肯定会知道)。

所以改为

def meet_criteria(account_no):
    if getsaving(account_no) == "HL":
        return HLmonthly()
    elif getsaving(account_no) == "RL":
        return RLmonthly()
    elif getsaving(account_no) == "EL":
        return ELmonthly()

进一步的改进:

if mylist[1][0]:
    loan1 = mylist[1][0]
else:
    pass

else分支不做任何事情。此外,如果您之前没有定义loan1并且稍后使用它,您会得到NameError: name 'loan1' is not defined.

要删除 else 分支:

if mylist[1][0]:
    loan1 = mylist[1][0]

得不到NameError

if mylist[1][0]:
    loan1 = mylist[1][0]
else:
    loan1 = 0  # if it is suposed to be integer, maybe you want None of False

推荐阅读