简单python if语句不起作用

2024-09-29 02:21:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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。。你知道吗

编辑

##retrive 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")

试图使用浮动,但似乎仍然没有工作!是不会进入最小假设的。你知道吗


Tags: ifputminmaxprinttemperatureinsidefirebase
1条回答
网友
1楼 · 发布于 2024-09-29 02:21:28

您正在比较字符串和浮点数。你知道吗

minTemperaturemaxTemperatureminHumiditymaxHumidity都是float对象,因为您转换了它们。但是temperaturehumidity字符串,否则当您尝试将它们与其他字符串连接时,Python会抛出异常。你知道吗

比较floatfloat,方法是在测试中转换:

if float(humidity) > maxHumidity:

或者将humiditytemperature转换为float,并在插入Firebase时将它们转换回字符串。你知道吗

在Python2中,不同类型的对象总是一致地排序,数字排在其他类型之前。这意味着<>比较是真还是假取决于两个操作数的排序顺序,而且由于Python 2中的数字是先排序的,因此与另一种类型的任何比较都是以较小的数字进行的:

>>> 3.14 < "1.1"
True

python3放弃了使所有内容都可排序的尝试;将浮点值与字符串进行比较会产生TypeError异常。你知道吗

相关问题 更多 >