Некорректная выдача в while

kanvill

Новичок
Пользователь
Дек 16, 2022
1
0
1
добрый вечер, хочу предупредить, что это буквально первый вечер за питоном и возможно глупый вопрос, но я даже не могу правильно сформулировать запрос в гугл...
возникла проблема с выдачей результата while
использую сайт programiz для написания сие чудища
часть, которая некорректно выдает результат
Python:
print("vfi")
vfi=C1*r+C2/r
print(vfi)
while vfi<vb:
    print(C1*(r+step)+C2/(r+step))
    vfi=C1*(r+step)+C2/(r+step)
выдает просто это:
1671215783461.png
хотя строки выше
Python:
while a<b:

    print (a+step)

    a=a+step
выдают приемлимый результат
1671215831394.png
Python:
import math
pi=3.14159265
pa=0
variant=16
amm=136
bmm=262
wamin=-3.4
wbmin=6.6
mu=0.17
ro=960
print ("Исходные данные")
print ("var  a  b  wa   wb  mu   ro")
print(":)  мм  мм  об/мин  об/мин  па*с  кг/м3")
print(variant,      amm,  bmm,  wamin,  wbmin,  mu,  ro)
#перевод в систему си
a=amm/1000
b=bmm/1000
wa=wamin*2*pi/60
wb=wbmin*2*pi/60
#расчет скоростей
va=wa*a
vb=wb*b
Re=(vb-va)*(b-a)*ro/mu
C1=(wb*b*b-wa*a*a)/(b*b-a*a)
C2=(wa-wb)/(b*b-a*a)*a*a*b*b
va1=C1*a+C2/a
vb1=C1*b+C2/b
print("Скорости")
print("Wa    Wb    va    va1   vb    vb1  Re")
print("рад/с  рад/с  м/с   м/с   м/ с  м/с   ")
print(wa,wb,va,va1,vb,vb1,Re)
#параметры течения
Ha=2*(wb-wa)/(1-(a/b)**2)
Hb=(2*(wb-wa)*(a/b)**2)/(1-(a/b)**2)
taua=mu*Ha
taua1=-2*mu*C2/a**2
taub=mu*Hb
taub1=-2*mu*C2/b**2
print("Параметры течения")
print("C1     C2   Ha   Hb  taua taua1 taub taub1")
print("            1/с  1/с  Па   Па    Па    Па   ")
print(C1,C2,Ha,Hb,taua,taua1,taub,taub1)
#параметры точки смены знака
R0=(-C2/C1)**(0.5)
alpha=(R0-a)/(b-R0)
beta=(R0-a)/(b-a)
gamma=(b-R0)/(b-a)
p0=pa+ro*(C1*C1*(R0*R0-a*a)/2+2*C1*C2*math.log(R0/a)-C2*C2*(1/(R0*R0)-1/a**a)/2)
pb=pa+ro*((C1**2*b**2-a**2)/2+2*C1*C2*math.log(b/a)-(C2**2)*(1/(b**2)-1/(a**2))/2)
print("Параметры точки смены знака скорости")
print("R0,мм alpha beta gamma p0,Па  pb,Па")
print(R0, alpha, beta, gamma, p0, pb)
#итоги
print("Итоги")
print("  va   vb     Re  pa  pb    R0    p0  alpha beta gamma")
print("  м/с   м/с        Па  Па    мм    Па")
print(va,vb,Re,pa,pb,R0,p0,alpha, beta, gamma)
#для графиков
print ("Для графиков")
N=20
step=(b-a)/N
r=a
print("r")
print("м")
print(a)
while a<b:
    print (a+step)
    a=a+step
print("vfi")
vfi=C1*r+C2/r
print(vfi)
while vfi<vb:
    print(C1*(r+step)+C2/(r+step))
    vfi=C1*(r+step)+C2/(r+step)
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
В коде, где выдает приемлемый результат, есть увеличение счетчика а (кстати, вместо a=a+step можно увеличивать вот так:
a += step), а вот в неработающем цикле такого нет, следовательно условие vfi<vb всегда дает истину. Возможно нужно сделать так: vfi += C1 * (r + step) + C2 / (r + step).
У тебя смотрю ещё определено число пи в начале скрипта, нет смысла, т.к. в модуле math это уже сделано.
Python:
import math


pa = 0
variant = 16
amm = 136
bmm = 262
wamin = -3.4
wbmin = 6.6
mu = 0.17
ro = 960
print("Исходные данные")
print("var  a  b  wa   wb  mu   ro")
print(":)  мм  мм  об/мин  об/мин  па*с  кг/м3")
print(variant, amm, bmm, wamin, wbmin, mu, ro)
# перевод в систему си
a = amm / 1000
b = bmm / 1000
wa = wamin * 2 * math.pi / 60
wb = wbmin * 2 * math.pi / 60
# расчет скоростей
va = wa * a
vb = wb * b
Re = (vb - va) * (b - a) * ro / mu
C1 = (wb * b * b - wa * a * a) / (b * b - a * a)
C2 = (wa - wb) / (b * b - a * a) * a * a * b * b
va1 = C1 * a + C2 / a
vb1 = C1 * b + C2 / b
print("Скорости")
print("Wa    Wb    va    va1   vb    vb1  Re")
print("рад/с  рад/с  м/с   м/с   м/ с  м/с   ")
print(wa, wb, va, va1, vb, vb1, Re)
# параметры течения
Ha = 2 * (wb - wa) / (1 - (a / b) ** 2)
Hb = (2 * (wb - wa) * (a / b) ** 2) / (1 - (a / b) ** 2)
taua = mu * Ha
taua1 = -2 * mu * C2 / a ** 2
taub = mu * Hb
taub1 = -2 * mu * C2 / b ** 2
print("Параметры течения")
print("C1     C2   Ha   Hb  taua taua1 taub taub1")
print("            1/с  1/с  Па   Па    Па    Па   ")
print(C1, C2, Ha, Hb, taua, taua1, taub, taub1)
# параметры точки смены знака
R0 = (-C2 / C1) ** 0.5
alpha = (R0 - a) / (b - R0)
beta = (R0 - a) / (b - a)
gamma = (b - R0) / (b - a)
p0 = pa + ro * (C1 * C1 * (R0 * R0 - a * a) / 2 + 2 * C1 * C2 * math.log(R0 / a) - C2 * C2 * (
            1 / (R0 * R0) - 1 / a ** a) / 2)
pb = pa + ro * ((C1 ** 2 * b ** 2 - a ** 2) / 2 + 2 * C1 * C2 * math.log(b / a) - (C2 ** 2) * (
            1 / (b ** 2) - 1 / (a ** 2)) / 2)
print("Параметры точки смены знака скорости")
print("R0,мм alpha beta gamma p0,Па  pb,Па")
print(R0, alpha, beta, gamma, p0, pb)
# итоги
print("Итоги")
print("  va   vb     Re  pa  pb    R0    p0  alpha beta gamma")
print("  м/с   м/с        Па  Па    мм    Па")
print(va, vb, Re, pa, pb, R0, p0, alpha, beta, gamma)
# для графиков
print("Для графиков")
N = 20
step = (b - a) / N
r = a
print("r")
print("м")
print(a)
while a < b:
    print(a + step)
    a += step
print("vfi")
vfi = C1 * r + C2 / r
print(vfi)
while vfi < vb:
    vfi += C1 * (r + step) + C2 / (r + step)
    print(vfi)
 

Форум IT Специалистов