我正在尝试制作一个计算气门间隙的程序。这是我做过的第一个程序,所以我很困惑。现在,这是我到目前为止所得到的。如果我输入一个超出范围的间隙,它会打印出“正确进入超出范围”,就像它应该的那样。但是如果它在IN范围内,那么它会一遍又一遍地在我的屏幕上填充“Right Intake in the range”,直到我杀了它。我错过了什么?
#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)
答案 0 :(得分:2)
你告诉它在范围内保持循环和打印:
while min <= cur <= max:
print "%r is in range." % valve
我怀疑你想要一个if
声明:
if min <= cur <= max:
print "%r is in range." % valve
答案 1 :(得分:1)
您必须更改条件中的值,以便它可以停止。
def in_range(min, max, cur, valve, target):
while min <= cur <= max:
print "%r is in range." % valve
这意味着,您必须更改其中一个值min
,cur
或max
,或多个值,以便打破无限循环。
答案 2 :(得分:0)
这一行:
while min <= cur <= max:
我相信是你的问题。虽然会反复评估附着在身体上的身体,直到情况失败。但是你的身体没有做任何事情导致这种情况发生变化,所以它会永远持续下去。我猜你的意思/需要使用if
而不是while
......