import math
print('如果RL滑动变阻器R1,R2,串联,R2最大阻值为20Ω,R2<RL,当滑片P位于b端时,灯泡L的实际功率为2W。求当滑片位于a端时灯泡功率可能是多少?')
P_b = 2
R_l = 8
R_1 = 40
R_2 = [0,8]
I = math.sqrt( P_b/R_l )
while True:
print(f'当滑片在b端时,L的功率为2W,根据公式I = √____此时电路中电流I={I}A')
dl = input("输入你选择的电流公式:")
if dl == 'P/Rl':
input('您输入的公式是串联电路,求电功率最常用的公式,接下来我们进一步分析:')
print(f'根据灯泡2W实际功率P,灯泡电阻Rl,确实全电路的电流I={I},确定电源电压U=I(R1+R2+Rl)')
input('当滑片移动到b端时,滑动变阻器阻值为0,电路中只有灯泡和R2串联,此时要分析的是,根据R2<Rl这个条件,从答案中我们知道此时需要知道一个合理的功率值')
input('此时我们就需要给到R2一个具体的值,因为它的阻值比Rl小,所以我们可以让它取8,这里我们可以得到一个电功率的最小值,当R2=0时,我们又可以得到灯泡Rl功率的一个最大值')
print('当滑动变阻器移动到b端时,R1=0,此时灯泡Rl和R2串联,电压为U,求出此时电路中的电流I\',根据电功率公式P=I\'^2Rl,及题目中中的条件R2小于Rl,取R2两个具体极限值,R2=0Ω,,R2=8Ω')
P_a1 = math.pow(I * (R_l + R_2[0] + R_1) / (R_2[0] + R_l), 2) * R_l
P_a2 = math.pow(I * (R_l + R_2[1] + R_1) / (R_2[1] + R_l), 2) * R_l
print(f'R2=0Ω,灯泡最大功率Pl最大 = {P_a1},当R2=8Ω,灯泡的电小功率为Pl最小={P_a2}')
else:
print('同学,你的思路不对哦!')
模运算的计算原理是这样的:
假设想求的a = x%y,a的值是通过如下公式算出来的:
a = x - (x/y)*y,且除法是按照整数除法来运算的
所以将你的数字代入公式:
-17%10 = -17 - (-17/10)*10 = -17 - (-2)*10 = 3.
产生这个结果的关键在于程序的取模公式,保证了
y是正数,模运算的结果就是[0,y),
y是负数,模运算的结果就是(y,0]
通常人们希望整除的商和余数会有这样的特性:
1. 被除数 = 除数*商 + 余数
2. 被除数符号变化,商的符号也变化,而绝对值不变
3. 余数的符号和除数相同
但实际上这 3 条不能总是符合的,第 1 条是肯定要符合的。
举例来说,3/2 为 1,3%2 为 1,如果要符合第 2 条,那就是 -3/2 为 -1,-3%2 为 -1,它是不符合第 3 条的;而如果要符合第 3 条,则是 -3%2 为 1,-3/2 为 -2,它是不符合第二条的。
所以一般编程语言会在第 2 或者 第 3 条中选择一条,python 选择的就是满足第 3 条的方式。很多其它的语言选择的是第 2 条。所以在 python 中,-17%10 为 3,而 -17/10 为 -2
注,在 python 3 中 / 表示除法,不表示整除,所以 -17/10 在 python 3 中为 -1.7,两个 / 才表示整除: -17//10 为 -2
这个问题在《C语言陷阱和缺陷》中有说明。
importmath
a,b,c
=
input("请输入3个数字(空格分隔):").split()
a
=
float(a)
b
=
float(b)
c
=
float(c)
d
=
(b**2)
-
(4*a*c)
if
a==0
and
b==0
and
c==0
:
print("有无穷个解")elif
d
>=
0:
x1
=
(-b-d/(2*a))
x2
=
(-b+d/(2*a))
print('结果为:%.2f,%.2f'%(x1,x2))
else:
print("无解")