gpt4 book ai didi

python - 对函数中的返回感到困惑

转载 作者:太空宇宙 更新时间:2023-11-04 09:11:45 25 4
gpt4 key购买 nike

好的,我的第一个程序遇到了问题。如果你向下看这两个函数,我想要的是,如果“cur”值不在最小值和最大值之间,它将 Target 变量更改为“0”,这样我就可以在程序中稍后使用它。 .但它似乎并没有这样做......我用错了“return”吗?基本上,函数需要将 target1 变为 0,以便 ri_fit 变为 0,这样我最后的 if thingys 触发器...

抱歉代码太糟糕了,我才刚刚开始!

#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 = 1

def in_range(min, max, cur, valve, target): #figures if intake valves are correct
if 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): #figures if exhaust valves are correct
if min <= cur <= max:
print "%r is in range." % valve
target=1

else:
print "%r is OUT OF RANGE." %valve
target=0
return target


ri_fit = 1
re_fit = 1 #Assumes all valves are right, until further notice...
li_fit = 1
le_fit = 1

valve = "Right Intake"
print in_range(in_min_target, in_max_target, cur_r_in, valve, target)
print target
if target == 0:
ri_fit = 0


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)

print ri_fit

if ri_fit==0:
print "Right intake is out of range."
print "Enter current right intake shim size."
ri_cur_shim = int(raw_input(">"))

if re_fit==0:
print "Right exhaust is out of range."
print "Enter current right exhaust shim size."
re_cur_shim = int(raw_input(">"))

if li_fit==0:
print "Right intake is out of range."
print "Enter current right intake shim size."
li_cur_shim = int(raw_input(">"))

if le_fit==0:
print "Right exhaust is out of range."
print "Enter current right exhaust shim size."
le_cur_shim = int(raw_input(">"))

最佳答案

当你在你的一个函数中分配给目标时,你正在替换那里名为目标的参数的值,而不是触及全局参数。所以如果你想让你的函数分配给全局目标,你不能在函数中定义一个新的目标。

但是如果你不想改变你的函数,你可以使用 return 返回一个值的事实(你似乎理解,因为你打印了它)。如果您不打印它,而是将它分配给目标,那么您将在您想要的地方获得您想要的值,并且无论计算出的值最终注定要去哪里,您的函数都会起作用。

关于python - 对函数中的返回感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14063687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com