我是python新手,我正在编写一个简单的脚本来使用Firebase,但我被一个简单的if语句卡住了,它似乎没有按预期工作:
## check for max values
if humidity > maxHumidity:
firebase.put("/Controls/Sensors", "/Humidity/max_inside", ""+humidity+"%")
print("Updating Humidity max_inside")
if temperature > maxTemperature:
firebase.put("/Controls/Sensors", "/Temperature/max_inside", ""+temperature+"C")
print("Updating Temperature max_inside")
## check for min values
if humidity < minHumidity:
firebase.put("/Controls/Sensors", "/Humidity/min_inside", ""+humidity+"%")
print("Updating Humidity min_inside")
if temperature < minTemperature:
firebase.put("/Controls/Sensors", "/Temperature/min_inside", ""+temperature+"C")
print("Updating Temperature min_inside")
问题是前两个if语句按预期工作,后两个不按预期工作。。如果湿度<;但是,什么也没发生
我使用的值是两倍,比如70.50
编辑
##retrieve max & min humidity (remove the %)
maxHumidity = firebase.get("/Controls/Sensors/Humidity/max_inside", None)
maxHumidity = maxHumidity[:-1]
maxHumidity = float(maxHumidity)
minHumidity = firebase.get("/Controls/Sensors/Humidity/min_inside", None)
minHumidity = minHumidity[:-1]
minHumidity = float(minHumidity)
#retrieve max & min temperature (remove the C)
maxTemperature = firebase.get("/Controls/Sensors/Temperature/max_inside", None)
maxTemperature = maxTemperature[:-1]
maxTemperature = float(maxTemperature)
minTemperature = firebase.get("/Controls/Sensors/Temperature/min_inside", None)
minTemperature = minTemperature[:-1]
minTemperature = float(minTemperature)
#add current value
humidity, temperature = readDHT22()
firebase.put("/Controls/Sensors", "/Humidity/current_inside", ""+humidity+"%")
firebase.put("/Controls/Sensors", "/Temperature/current_inside", ""+temperature+"C")
##check for max values
if humidity > maxHumidity:
firebase.put("/Controls/Sensors", "/Humidity/max_inside", ""+humidity+"%")
print("Updating Humidity max_inside")
if temperature > maxTemperature:
firebase.put("/Controls/Sensors", "/Temperature/max_inside", ""+temperature+"C")
print("Updating Temperature max_inside")
## cehck for min values
if humidity < minHumidity:
firebase.put("/Controls/Sensors", "/Humidity/min_inside", ""+humidity+"%")
print("Updating Humidity min_inside")
if temperature < minTemperature:
firebase.put("/Controls/Sensors", "/Temperature/min_inside", ""+temperature+"C")
print("Updating Temperature min_inside")
尝试使用float,但似乎仍不起作用!不会进入最小ifs
您正在将字符串与浮点数进行比较
minTemperature
、maxTemperature
、minHumidity
和maxHumidity
都是float
对象,因为您转换了它们。但是temperature
和humidity
是字符串,因为否则Python在尝试将它们与其他字符串连接时会引发异常通过在测试中转换
float
与float
进行比较:或者将
humidity
和temperature
转换为浮点数,并在插入Firebase时将它们转换回字符串在Python2中,不同类型的对象总是一致地排序,数字排在其他类型之前。这意味着
<
和>
比较根据两个操作数的排序顺序是真是假,并且由于Python 2中的数字是先排序的,因此与另一种类型的任何比较都是以被认为小于的数字进行的:Python3不再试图使一切都有序化;将浮点值与字符串进行比较会产生
TypeError
异常相关问题 更多 >
编程相关推荐