我正在做一个项目,使用python读取raspberry pi上的数字输入。我想把其中一个按钮变成一个开关,因为每当我按下它时,它就会在1和0之间切换一个值。除以下部分外,一切正常:
if(a == 0.0):
a = 1.0
if(a == 1.0):
a = 0.0
似乎这应该与代码的其余部分一起工作,使得每当按下按钮时,值在1和0之间切换,但是a每次打印为0.0,有人知道这是为什么吗?你知道吗
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.setup(24, GPIO.IN, pull_up_down = GPIO.PUD_UP)
a = 0.0
b = 0.0
c = 0
while True:
if(GPIO.input(4) ==1 and c ==0):
print 'Button 1 Pressed'
if(a == 0.0):
a = 1.0
if(a == 1.0):
a = 0.0
c = 1
print a
if(GPIO.input(4) !=1):
c = 0
if(GPIO.input(24) ==0):
print 'Button 2 Pressed'
如果从
a = 0
开始,两个if
语句匹配,最后返回0
。你知道吗改用
if .. elif
;这是一个语句,只有一个分支可以匹配:但是,我不确定您使用这些值的目的是什么。浮点比较是很棘手的,因为使用float的计算可能会导致非常细微的差异,在这种情况下,看起来您正好有
1.0
,但实际上有0.9999999999999872545
。那不等于1.0
。你想用布尔值来代替?在这种情况下,请使用:如果您确实需要使用浮点,请测试您的值是否足够接近:
如果您使用的是Python 3.5或更新版本,则可以使用新的^{} function :
相关问题 更多 >
编程相关推荐