我正在研究一个气象站,它来自加拿大环境部多伦多的数据。如果风速和风寒结果超过或低于某些数字,我想在面包板上点亮LED。
风速警告使用以下代码正常工作:
if ((cityObject.get_quantity(wind)) > windmax: GPIO.output(13,GPIO.HIGH)
else: GPIO.output(13,GPIO.LOW)
风寒警告证明更复杂。当没有明显的风寒时,环境加拿大会返回“无”。但是,最终,它也会返回一个负整数。以下代码点亮我的风寒警告LED,确实应该关闭:
chillzero = "None"
if (cityObject.get_quantity(chill)) == chillzero: GPIO.output(11,GPIO.LOW)
if (cityObject.get_quantity(chill)) < chillmax: GPIO.output(11,GPIO.HIGH)
else: GPIO.output(11,GPIO.LOW)
在撰写本文时,以下内容将返回无
print cityObject.get_quantity(chill)
知道为什么这段代码导致我的LED保持点亮状态?当风寒低于-15C
时,我只希望它出现。
答案 0 :(得分:0)
我假设你混淆了字符串"None"
和类型None
。
print cityObject.get_quantity(chill)
会打印None
的类型代表,这就是为什么你会看到无印刷的原因。
而不是:
if (cityObject.get_quantity(chill)) == chillzero:
尝试:
if cityObject.get_quantity(chill) is not None:
此外似乎还有一些redunant电话,所以你也可以试试这个:
if (cityObject.get_quantity(chill)) < chillmax:
print "Windchill: %s" % cityObject.get_quantity(chill)
GPIO.output(11, GPIO.HIGH)
else:
# Would be greater than or equal to chillmax, or return None
GPIO.output(11, GPIO.LOW)
答案 1 :(得分:0)
在这种情况下,问题似乎是Python不将环境加拿大的风寒结果视为整数,尽管结果包含数字。这段代码修好了它。
chillmax = int(cityObject.get_quantity(chill))
if (cityObject.get_quantity(chill)) is not None:
if chillmax < -15:
GPIO.output(11,GPIO.HIGH)
else:
GPIO.output(11,GPIO.LOW)
答案 2 :(得分:0)
由于这是您的第一个任何类型的编码项目,看起来您可能只是在某处遇到数据类型问题。如果有疑问,如果需要,只需要一步一步地做。
System.out.println("java " + example.optional_double_test(null));
System.out.println("java " + example.optional_double_test(123.456));
System.out.println("java " + example.optional_string_test(null));
System.out.println("java " + example.optional_string_test("greetings"));