首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我希望我的代码检查多个条件,并选择已经满足的条件并执行它。不幸的是,我的代码没有返回任何东西。

我希望我的代码检查多个条件,并选择已经满足的条件并执行它。不幸的是,我的代码没有返回任何东西。
EN

Stack Overflow用户
提问于 2021-05-16 12:10:54
回答 2查看 39关注 0票数 0

corr是相关系数,意思是I有3个相关值,std_mev是标准差值,也就是3个标准差值。我希望我的代码检查下面代码中的条件是否满足,如果满足了,它应该执行为true的语句,并计算induc值,如代码所示。不幸的是,没有错误,甚至没有执行来产生工业值,请协助,我有一张附图来显示这一点。

。守则如下:

代码语言:javascript
复制
    corr1,_ = pearsonr(list_losses, list_mev1)
    print('Pearsons correlation[loss and MEV1]: %.4f' % corr1)

    corr2,_ = pearsonr(list_losses, list_mev2)
    print('Pearsons correlation[loss and MEV2]: %.4f' % corr2)

    corr3,_ = pearsonr(list_losses, list_mev3)
    print('Pearsons correlation[loss and MEV3]: %.4f' % corr3)

    ### calculating standard deviation
    std_mev1 = statistics.stdev(std_mev1_list)
    std_mev2 = statistics.stdev(std_mev2_list)
    std_mev3 = statistics.stdev(std_mev3_list)

    print("Std MEV 1 = ",std_mev1)
    print("Std MEV 1 = ",std_mev2)
    print("Std MEV 1 = ",std_mev3)

    if corr1>=0.5 and corr2>=0.5 and corr3>=0.5:
        induc_cur_ls = cur_ls*(1+std_mev1)*(1+std_mev2)*(1+std_mev3)
        induc_on2_ls = on2_ls*(1+std_mev1)*(1+std_mev2)*(1+std_mev3)
        induc_tt2_ls = tt2_ls*(1+std_mev1)*(1+std_mev2)*(1+std_mev3)
        induc_sx2_ls = sx2_ls*(1+std_mev1)*(1+std_mev2)*(1+std_mev3)
        induc_nn2_ls = nn2_ls*(1+std_mev1)*(1+std_mev2)*(1+std_mev3)
    elif corr1>=0.5 and corr2>=0.5 and corr3<0.5:
        induc_cur_ls = cur_ls*(1+std_mev1)*(1+std_mev2)
        induc_on2_ls = on2_ls*(1+std_mev1)*(1+std_mev2)
        induc_tt2_ls = tt2_ls*(1+std_mev1)*(1+std_mev2)
        induc_sx2_ls = sx2_ls*(1+std_mev1)*(1+std_mev2)
        induc_nn2_ls = nn2_ls*(1+std_mev1)*(1+std_mev2)
    elif corr1>=0.5 and corr3>=0.5 and corr2<0.5:
        induc_cur_ls = cur_ls*(1+std_mev1)*(1+std_mev3)
        induc_on2_ls = on2_ls*(1+std_mev1)*(1+std_mev3)
        induc_tt2_ls = tt2_ls*(1+std_mev1)*(1+std_mev3)
        induc_sx2_ls = sx2_ls*(1+std_mev1)*(1+std_mev3)
        induc_nn2_ls = nn2_ls*(1+std_mev1)*(1+std_mev3)
    elif corr3>=0.5 and corr2>=0.5 and corr1<0.5:
        induc_cur_ls = cur_ls*(1+std_mev2)*(1+std_mev3)
        induc_on2_ls = on2_ls*(1+std_mev2)*(1+std_mev3)
        induc_tt2_ls = tt2_ls*(1+std_mev2)*(1+std_mev3)
        induc_sx2_ls = sx2_ls*(1+std_mev2)*(1+std_mev3)
        induc_nn2_ls = nn2_ls*(1+std_mev2)*(1+std_mev3)
    elif corr1>=0.5 and corr2<0.5 and corr3<0.5:
        induc_cur_ls = cur_ls*(1+std_mev1)
        induc_on2_ls = on2_ls*(1+std_mev1)
        induc_tt2_ls = tt2_ls*(1+std_mev1)
        induc_sx2_ls = sx2_ls*(1+std_mev1)
        induc_nn2_ls = nn2_ls*(1+std_mev1)
    elif corr2>=0.5 and corr1<0.5 and corr3<0.5:
        induc_cur_ls = cur_ls*(1+std_mev2)
        induc_on2_ls = on2_ls*(1+std_mev2)
        induc_tt2_ls = tt2_ls*(1+std_mev2)
        induc_sx2_ls = sx2_ls*(1+std_mev2)
        induc_nn2_ls = nn2_ls*(1+std_mev2)
    elif corr3>=0.5 and corr1<0.5 and corr2<0.5:
        induc_cur_ls = cur_ls*(1+std_mev3)
        induc_on2_ls = on2_ls*(1+std_mev3)
        induc_tt2_ls = tt2_ls*(1+std_mev3)
        induc_sx2_ls = sx2_ls*(1+std_mev3)
        induc_nn2_ls = nn2_ls*(1+std_mev3)
    else:
        induc_cur_ls = cur_ls
        induc_on2_ls = on2_ls
        induc_tt2_ls = tt2_ls
        induc_sx2_ls = sx2_ls
        induc_nn2_ls = nn2_ls

        print(induc_cur_ls)
        print(induc_on2_ls)
        print(induc_tt2_ls)
        print(induc_sx2_ls)
        print(induc_nn2_ls)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-16 13:36:01

虽然这不是一个答案(我认为@abdullatif给了您一个答案),但我认为这是对您应该考虑的代码的简化。当然,检查它以确保它能做你想做的事情,但我认为它做到了。

代码语言:javascript
复制
corr1_multiplier = (1 + std_mev1) if corr1 >= 0.5 else 1.0
corr2_multiplier = (1 + std_mev2) if corr2 >= 0.5 else 1.0
corr3_multiplier = (1 + std_mev3) if corr3 >= 0.5 else 1.0
corr_multiplier = corr1_multiplier * corr2_multiplier * corr3_multiplier

induc_cur_ls = cur_ls * corr_multiplier
induc_on2_ls = on2_ls * corr_multiplier
induc_tt2_ls = tt2_ls * corr_multiplier
induc_sx2_ls = sx2_ls * corr_multiplier
induc_nn2_ls = nn2_ls * corr_multiplier
票数 0
EN

Stack Overflow用户

发布于 2021-05-16 12:32:43

一切似乎都是正确的,但最后几行中的打印在未执行的lines条件内。这就是为什么你的代码不打印任何东西。试着将它们缩回原处,使其处于这样的状态之外:

代码语言:javascript
复制
    else:
        induc_cur_ls = cur_ls
        induc_on2_ls = on2_ls
        induc_tt2_ls = tt2_ls
        induc_sx2_ls = sx2_ls
        induc_nn2_ls = nn2_ls

    print(induc_cur_ls)
    print(induc_on2_ls)
    print(induc_tt2_ls)
    print(induc_sx2_ls)
    print(induc_nn2_ls)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67556493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档