我希望有人能为我的剧本指明正确的方向,我想要改进。我正在学习电子学,并编写了一些Python脚本来帮助计算。我已经写了和小的基本脚本,帮助我计算正确的电阻值的晶体管放大器。
问题是,当计算所需的电阻时,我的值与标准电阻值不匹配。
例如:
标准电阻值: 100,150,275,340,420,550
脚本中的计算结果给了我176的电阻值。
如何使用Python来选择最近的标准值。
如果计算结果是176,那么另一行文字会说:“为电路选择一个150电阻”。
我知道我可以使用列表,所以我可以引用这些值,但我只需要一个小示例,说明如何将脚本放在一起来显示实际值,然后从列表中引用标准值。
希望这是有意义的。任何帮助都很感激。
我的剧本是很基本的,但它做的工作。以后会有改进的。
Av = 15
Rc = 3300
Vs = 10
Vc = 6
beta = 100
Re = Rc / Av
Ic = (Vs - Vc) / Rc
Ve = Re * Ic
Vb = Ve + 0.7
Ib = Ic / beta
I2 = 10 * Ib
R2 = Vb / I2
R1 = (Vs - Vb) / (I2 + Ib)
print ('Re =',Re)
print ('Ve =',Ve)
print ('Vb =',Vb)
print ('Ic =',Ic)
print ('Ib =',Ib)
print ('I2 =',I2)
print ('R2 =',R2)
print ('R1 =',R1)它计算了晶体管各部分的电压和电流,并根据增益和提供的电压等给出了R2和R1所需的值。
发布于 2015-09-18 21:39:30
使用等分模块找出插入点,然后考虑比插入点少1。
from bisect import bisect
def find_closest(v, options):
i = bisect(options, v)
if i == len(options):
return options[-1]
elif i == 0:
return options[0]
else:
low, high = options[i-1:i+1]
return low if (high-v) > (v-low) else high
standard_values = [100, 150, 275, 340, 420, 550]
answer = 176
print(find_closest(answer, standard_values))发布于 2015-09-18 21:33:15
3>> import bisect
3>> e12brown = [100, 120, 150, 180, 220, 270, 330, 390, 470, 560, 680, 820]
3>> e12brown[bisect.bisect(e12brown, 170) - 1]
150
3>> e12brown[bisect.bisect(e12brown, 170)]
180发布于 2015-09-18 21:44:44
def closestToR(l, R):
from operator import itemgetter
tupleList = zip(l, [ abs(x - R) for x in l ])
closeToR, delta = sorted(tupleList, key=itemgetter(1)).pop(0)
print("R = {} delta = {}".format(closeToR, delta)) L= 100,150,275,340,420,550
R= 179
R= 150 delta = 29
https://stackoverflow.com/questions/32661166
复制相似问题