-1

バルブクリアランスを計算するプログラムを作成しようとしています。これは私がこれまでに作った最初のプログラムなので、私はそれを通して自分の道を混乱させています。さて、これが私がこれまでに得たものです。範囲外のクリアランスを入力すると、本来のように「Right IntakeisOUTOFRANGE」と表示されます。しかし、それが範囲内にある場合、それは私がそれを殺すまで、何度も何度も「右摂取量は範囲内にあります」で私の画面を埋めます。私は何が欠けていますか?

#Clearance calculator
#clearances are in clearances.txt

targets = open("clearances.txt", "r")
lines = targets.readlines()   #get target clearances from file

in_min_target = float(lines[2])     #minimum intake clearance
in_max_target = float(lines[4])     #maximum intake clearance

ex_min_target = float(lines[8])    #miminum exhaust clearances
ex_max_target = float(lines[10])   #maximum exhaust clearances
targets.close

target_intake = (in_min_target + in_max_target) / 2     #find the ideal intake
target_exhaust = (ex_min_target + ex_max_target) / 2    #find the ideal exhaust

print "Intake Min: ", in_min_target
print "Intake Max: ", in_max_target
print "Exhaust Min: ", ex_min_target
print "Exhaust Max: ", ex_max_target
print """Target intake: %r
Target Exhaust: %r""" % (target_intake, target_exhaust)

print""
print "Enter current RIGHT side Intake clearance"
cur_r_in = float(raw_input(">"))
print ""
print "Enter current RIGHT side Exhaust clearance"
cur_r_ex = float(raw_input(">"))
print ""
print "Enter current LEFT side Intake clearance"
cur_l_in = float(raw_input(">"))
print ""
print "Enter current LEFT side Exhaust clearance"
cur_l_ex = float(raw_input(">"))

target=5

def in_range(min, max, cur, valve, target):
    while min <= cur <= max:
        print "%r is in range." % valve
    target=1
else:
    print "%r is OUT OF RANGE." %valve
    target=0
return target

def ex_range(min, max, cur, valve, target):
if min <= cur <= max:
    print "%r is in range." % valve
    target=1
else:
    print "%r is OUT OF RANGE." %valve
    target=0


valve = "Right Intake"
print in_range(in_min_target, in_max_target, cur_r_in, valve, target)

print ""

valve = "Right Exhaust"
print ex_range(ex_min_target, ex_max_target, cur_r_ex, valve, target)

print ""

valve = "Left Intake"
print in_range(in_min_target, in_max_target, cur_l_in, valve, target)

print ""

valve = "Left Exhaust"
print ex_range(ex_min_target, ex_max_target, cur_l_ex, valve, target)
4

3 に答える 3

2

範囲内にある間、ループと印刷を続けるように指示しています。

while min <= cur <= max:
    print "%r is in range." % valve

私はあなたがif声明を望んでいると思います:

if min <= cur <= max:
    print "%r is in range." % valve
于 2012-12-27T23:48:07.877 に答える
1

条件が停止するように、条件の値を変更する必要があります。

def in_range(min, max, cur, valve, target):
    while min <= cur <= max:
        print "%r is in range." % valve

つまり、無限ループを解除するには、値、、、、、または複数の値minを変更する必要があります。curmax

于 2012-12-27T23:48:20.393 に答える
0

この行:

while min <= cur <= max:

あなたの問題だと私は信じています。条件が失敗するまで、それに接続されているボディを繰り返し評価します。しかし、あなたの体はその状態を変えるために何もしません、それでそれはただ永遠に続きます。ifそこの代わりに使うつもりだった/使う必要があると思いますwhile...

于 2012-12-27T23:50:18.690 に答える