- 两段说明信息,分别说明如何输入变量,如果选择公式
- 输入变量,融合了字典添加的方法,把输入的键名和键值,编成字典
- 然后对每一种情况列出函数表达式,进行欧姆定律中各个物理的求值
- 程序很简单,帮助我们的学生进行电学的更好的学习
- 精彩之处在于变量的输入,比较灵活,通过字典的形式保存,调用变量更加方便
#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()
希望对学生学习有所帮助,也希望大家多提宝贵意见!非常感谢!



