编辑代码

import math

if __name__ == "__main__":

    #模式 (0:并联;1:串联)
    mode = 1
    #频率(Hz)
    f = 50
	#电压(V)
    Vol = 50
    #线性支路使能
    route_r_en = 1
    #线性支路电阻(Ω)
    R = 10
    #RL支路使能
    route_rl_en = 1
    #RL支路电阻(Ω)
    Rl = 1
    #RL支路电感(H)
    L = 0.03183
    #RC支路使能
    route_rc_en = 0
    #RC支路电阻(Ω)
    Rc = 0
    #RC支路电容(H)
    C = 0.0006366

###################################

    #角频率
    w = 2 * math.pi * f

    if mode:      #串联
        Xl = w * L
        if C:
            Xc = 1 / (w*C)
        else:
            Xc = 0

        X = Xl - Xc
        Z = math.sqrt(R*R + X*X)

        #电流有效值
        I_rms = Vol / Z
        #功率因数
        if X >= 0:
            PF = R / Z
        else:
            PF = -R / Z

    else:           #并联
        #线性支路电流
        if route_r_en:
            Ir = Vol / R
        else:
            Ir = 0

        #RL支路电流
        if route_rl_en:
            Xl = w * L
            Z = math.sqrt(Rl*Rl + Xl*Xl)

            Irl = Vol / Z
            Irl0 = Irl * Rl / Z
            Irl1 = Irl * Xl / Z
        else:
            Irl = 0
            Irl0 = 0
            Irl1 = 0

        #RC支路电流
        if route_rc_en:
            if C:
                Xc = 1 / (w*C)
            else:
                Xc = 0
            Z = math.sqrt(Rc*Rc + Xc*Xc)

            Irc = Vol / Z
            Irc0 = Irc * Rc / Z
            Irc1 = Irc * Xc / Z
        else:
            Irc = 0
            Irc0 = 0
            Irc1 = 0
        
        #线性电流
        I_line = Ir + Irl0 + Irc0
        #非线性电流
        I_lc = Irl1 - Irc1

        #电流有效值
        I_rms = math.sqrt(I_line*I_line + I_lc*I_lc)
        #功率因数
        if I_lc >= 0:
            PF = I_line / I_rms
        else:
            PF = -I_line / I_rms

    print("I_rms = "+str(I_rms)+"A\nPF = "+str(PF))