【问题标题】:python if-else statement returning true only for if conditionpython if-else 语句仅对 if 条件返回 true
【发布时间】:2016-09-03 18:41:10
【问题描述】:

我正在使用 python 从文件中读取数值天气数据,然后检查湿度条件。如果湿度小于或等于 75,则应将湿度改写为“低”,如果湿度大于 75,则应将其改写为“高”。以下是我在文件中的数据。

外观、温度、湿度、风、permission_to_play

  1. sunny,85,85,FALSE,no
  2. sunny,80,90,TRUE,no
  3. 阴天,83,86,假,是的
  4. rainy,70,96,FALSE,yes
  5. rainy,68,80,FALSE,yes
  6. rainy,65,70,TRUE,no
  7. 阴,64,65,真,是的
  8. sunny,72,95,FALSE,no
  9. sunny,69,70,FALSE,yes
  10. rainy,75,80,FALSE,yes
  11. sunny,75,70,TRUE,yes
  12. 阴天,72,90,真,是的
  13. 阴天,81,75,假,是的
  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']]

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

【问题讨论】:

  • 您正在读取字符串并将它们与ints 进行比较!在与75 比较之前转换为inthumidity=int(subList[2])

标签: python list if-statement file-handling


【解决方案1】:

在与75比较之前,您应该将字符串转换为int

if int(humidity)>75:

【讨论】:

    【解决方案2】:

    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'
    

    【讨论】:

      猜你喜欢
      • 2016-05-10
      • 1970-01-01
      • 2015-03-22
      • 2021-08-31
      • 2013-09-09
      • 2015-12-16
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      相关资源
      最近更新 更多