栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【2021-11-23】python字典、函数的巧妙融合

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【2021-11-23】python字典、函数的巧妙融合

初中物理电学与python字典、函数的巧妙融合
  1. 两段说明信息,分别说明如何输入变量,如果选择公式
  2. 输入变量,融合了字典添加的方法,把输入的键名和键值,编成字典
  3. 然后对每一种情况列出函数表达式,进行欧姆定律中各个物理的求值
  4. 程序很简单,帮助我们的学生进行电学的更好的学习
  5. 精彩之处在于变量的输入,比较灵活,通过字典的形式保存,调用变量更加方便
#coding=gbk
def info_bl():
    print('''输入物理量:
    输入总电流值 -->I | 输入总电阻值 -->R | 输入电源电压值 -->U
    输入分支1电流值 -->I1 | 输入一个电阻值 -->R1 | 输入R1两端电压值 -->U1
    输入分支2电流值 -->I2 | 输入另一电阻值 -->R2 | 输入R2两端电压值 -->U2''')
def info_gs():
    print("""
    使用公式解题流程:
            1 求串联电路总电阻:R总=R1+R2
            2 求并联电路总电阻:1/R总 = 1/R1 + 1/R2
            
            3 串联电压规律求总电压:U总=U1+U2
            4 并联电压规律求电压:U总=U1=U2
            5 串联电流规律求总电流:I = I1 = I2
            6 并联电路电流规律:I = I1 + I2

            7 根据欧姆定律求I三个公式,I1,I2: I=U/R I1 = U1/R1 I2=U2/R2
            8 根据并联电流规律求支路电流: I1 = I - I2 | I2 = I - I1

            9 根据欧姆定律求电压: U=IR
            10 根据欧姆定律求串联R1的电压: U1=I1·R1
            11 根据欧姆定律求串联R2的电压: U2=I2·R2  
            12 根据欧姆定律求电流:I=U/R  
            13 并联电路支路电阻:R总=U/I或R1=U1/I1或R2=U2/I2
        根据上表信息,输入题目中物理量对应的名称及数值(建立变量及对应值的字典返回函数)
        """)
wuli_dian = {}

wuli_bl = ['I','I1','I2','R','R2','R2','U','U1','U2']

def dian_UIR():

    while True:
        info_bl()
        while True:
            key_name = input("输入物理符号--> ")
            if key_name in wuli_bl:
                val_data = float(input(f'输入0~100数值{key_name}= '))
                if isinstance(val_data,float) == True:
                    wuli_dian[key_name] = val_data

            elif len(key_name) == 0:
                input(f'数据{[i for i in wuli_dian.keys()]}输入完毕,匹配公式开始计算吧!')
                break
            elif key_name not in wuli_bl and len(key_name) != 0:
                continue
        return (key_name, wuli_dian)


def dian_Rc(dict_wuli):
    global R_val
    print('根据串联电路电阻计算公式:')
    R_val = dict_wuli['R1'] + dict_wuli['R2']
    print(f'求得的电阻值为:{R_val}Ω')
    return R_val

def dian_Uc(dict_wuli):
    global U_val
    print('根据串联电路电压计算公式:')
    U_val = dict_wuli['U1'] + dict_wuli['U2']
    print(f'求得的电压值为:{U_val}V')
    return U_val

def dian_Ub(key_name,dict_wuli):
    global U_val
    print('根据串联电路电压计算公式:')
    U_val = dict_wuli['U1'] =dict_wuli['U2']
    print(f'求得的各个支路的电压值为U1=U2=U:{U_val}V')
    return U_val


def dian_Rb(dict_wuli):
    global R_val
    print('求并联电路电阻的计算公式:')
    R_val = (dict_wuli['R1'] * dict_wuli['R2'])/(dict_wuli['R1'] + dict_wuli['R2'])
    print(f'电阻值为:{R_val}')
    return R_val

def Oumu_I():
    global I_val
    xz = input('I or I1 or I2?')
    if xz == 'I':
        print(f'根据欧姆定律求电路中的电流{xz}:')
        I_val = dict_wuli['U']/dict_wuli['R']
        print(f'电路电流I={I_val}')
    elif xz == 'I1':
        print(f'根据欧姆定律求并联电路中的支路电流{xz}:')
        I_val = dict_wuli['U1'] / dict_wuli['R1']
        print(f'电路电流I={I_val}A')
    elif xz == 'I2':
        print(f'根据欧姆定律求并联电路中的支路电流{xz}:')
        I_val = dict_wuli['U2'] / dict_wuli['R2']
        print(f'电路电流I={I_val}A')
    return I_val


def dian_Ic():
    global I_val
    print('串联电路电流处处相等')
    I_val = dict_wuli['I1'] = dict_wuli['I2']
    print(f'I1=I2=I={I_val}A')
    return I_val

def dian_Ib():
    global I_val
    print('求并联电路干路电流I')
    I_val = dict_wuli['I1'] + dict_wuli['I2']
    print(f'I总 =I1 + I2 = {I_val}A')
    return I_val



def dian_I1():
    global I_val
    xz = input('I1 or I2?')
    if xz == 'I1':
        print(f'求并联电路支路电流{xz}')
        I_val = dict_wuli['I'] - dict_wuli['I2']
        print(f'I总={I_val}')
    elif xz == 'I2':
        print(f'求并联电路支路电流{xz}')
        I_val = dict_wuli['I'] - dict_wuli['I1']
        print(f'I2 = I - I1 ={I_val}')

    elif xz == 'I':
        print(f'求并联电路支路电流{xz}')
        I_val = dict_wuli['I'] - dict_wuli['I1']
        print(f'I = I1 + I2 ={I_val}')
    return I_val

def Oumu_U():
    global U_val
    print('根据欧姆定律求电压:')
    U_val = dict_wuli['I'] * dict_wuli['R']
    print(f'电路电压U={U_val}')
    return U_val

def Oumu_U1():
    global U_val
    print('根据欧姆定律求电压:')
    U_val = dict_wuli['I1'] * dict_wuli['R1']
    print(f'电路电压U={U_val}')
    return U_val

def Oumu_U2():
    global U_val
    print('根据欧姆定律求电压:')
    U_val = dict_wuli['I2'] * dict_wuli['R2']
    print(f'电路电压U={U_val}')
    return U_val

def Oumu_R1():
    global R_val
    xz = input('R or R1 or R2?')
    print(f'串联电路,根据欧姆定律求{xz}电阻:')
    if xz == 'R1':
        R_val = dict_wuli['U1'] / dict_wuli['I1']
    elif xz == 'R2':
        R_val = dict_wuli['U2'] / dict_wuli['I2']
    elif xz == 'R':
        R_val = dict_wuli['U'] / dict_wuli['I']
    print(f'总电阻{xz}={R_val}')
    return R_val








if __name__ == '__main__':
    key_name, dict_wuli = dian_UIR()

    while True:
            info_gs()
            gs = int(input('输入对应公式编号解题:'))
            if gs == 1:
                dian_Rc(dict_wuli)
                key_name, dict_wuli = dian_UIR()

            elif gs == 2:
                dian_Rb(dict_wuli)
                key_name, dict_wuli = dian_UIR()

            elif gs == 3:
                dian_Uc(dict_wuli)
                key_name, dict_wuli = dian_UIR()

            elif gs == 4:
                dian_Ub(key_name,dict_wuli)
                key_name, dict_wuli = dian_UIR()


            elif gs == 5:
                dian_Ic()
                key_name, dict_wuli = dian_UIR()

            elif gs == 6:
                dian_Ib()
                key_name, dict_wuli = dian_UIR()


            elif gs == 7:
                Oumu_I()
                key_name, dict_wuli = dian_UIR()
            #并联电流规律 I1=I-I2 | I2 = I - I1
            elif gs == 8:
                dian_I1()
                key_name, dict_wuli = dian_UIR()

            elif gs == 9:
                Oumu_U()
                key_name, dict_wuli = dian_UIR()

            elif gs ==10:
                Oumu_U1()
                key_name, dict_wuli = dian_UIR()

            elif gs == 11:
                Oumu_U2()
                key_name, dict_wuli = dian_UIR()

            elif gs == 13:
                Oumu_R1()
                key_name, dict_wuli = dian_UIR()

希望对学生学习有所帮助,也希望大家多提宝贵意见!非常感谢!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/589034.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号