python if-else 语句仅在 if 条件下返回 true

python if-else statement returning true only for if condition

我正在使用 python 从文件中读取数字天气数据,然后检查湿度条件。如果湿度小于或等于 75,则湿度应重写为 "low",如果湿度大于 75,则应重写为 "high"。以下是我在文件中的数据。

展望,温度,湿度,风,permission_to_play

  1. sunny,85,85,FALSE,no
  2. 晴天,80,90,真,没有
  3. 阴,83,86,FALSE,是
  4. 下雨,70,96,FALSE,是
  5. 下雨,68,80,FALSE,是
  6. 下雨,65,70,真,没有
  7. 阴,64,65,TRUE,是
  8. sunny,72,95,FALSE,no
  9. 晴天,69,70,假,是
  10. 下雨,75,80,FALSE,是
  11. 晴天,75,70,真实,是
  12. 阴,72,90,TRUE,是
  13. 阴,81,75,FALSE,是
  14. 下雨,71,91,真,没有

我正在读取列表中的这个文件,然后访问湿度值。以下是我写的代码。

def fetchData(fileName):
    datalist = []
    rd =open(fileName,mode='r')
    list = rd.readlines()
    for l in list:
        subList = l.strip().split(',')
        humidity=subList[2]
        if humidity>75:
            subList[2]="high"
        else:
            subList[2]="low"
        datalist.append(subList)
    return datalist

dataList = fetchData('weather.numeric.data')
print dataList

执行此操作后,数据编号 6、7、9、11、13 的湿度值应为低,其他数据应为高。但是所有的湿度值都变高了,如下面的输出所示。

[['sunny', '85', 'high', 'FALSE', 'no'], ['sunny', '80', 'high', 'TRUE', 'no'], ['overcast', '83', 'high', 'FALSE', 'yes'], ['rainy', '70', 'high', 'FALSE', 'yes'], ['rainy', '68', 'high', 'FALSE', 'yes'], ['rainy', '65', 'high', 'TRUE', 'no'], ['overcast', '64', 'high', 'TRUE', 'yes'], ['sunny', '72', 'high', 'FALSE', 'no'], ['sunny', '69', 'high', 'FALSE', 'yes'], ['rainy', '75', 'high', 'FALSE', 'yes'], ['sunny', '75', 'high', 'TRUE', 'yes'], ['overcast', '72', 'high', 'TRUE', 'yes'], ['overcast', '81', 'high', 'FALSE', 'yes'], ['rainy', '71', 'high', 'TRUE', 'no']]

我应该做哪些改变? 提前致谢! :)

在与 75:

比较之前,您应该将字符串转换为 int
if int(humidity)>75:

1 使用 'with' 语句打开文件:

 with open (filename, "r") as rd:
    #don't use list - it is a type name
    mylist = rd.readlines()
 for l in mylist .....

2 将值转换为 int:

try humidity = int(humidity):
    if humidity>75:
        subList[2]="high"
    else:
        subList[2]="low"
except:
    return 'bad values in file - humidity is not a number'