2016-05-09 9 views
0

pythonを使用してファイルから数値天気データを読み込み、湿度条件を確認しています。湿度が75以下の場合、湿度は「低」と書き換え、湿度が75を超える場合は「高」と書き直す必要があります。以下は私のデータです。python if-else文は、条件の場合にのみtrueを返します。

見通し、温度、湿度、風、

  1. 、晴れ85,85、FALSE、無
  2. 晴れ、80,90、TRUE、83,86、曇りFALSEない
  3. をpermission_to_playはい、
  4. 雨、70,96、FALSE、はい
  5. 雨、68,80、FALSE、はい
  6. 雨、65,70、TRUE、無
  7. O vercast、TRUE 64,65、はい
  8. は、72,95、晴れFALSE、無
  9. 晴れ、69,70、FALSE FALSE、はい
  10. 雨、75,80、はい
  11. 晴れ、 75,70、TRUE、そう
  12. 曇り、72,90、TRUE、そう
  13. 曇り、81,75、FALSE、はい
  14. TRUE雨、71,91、無

Iこのファイルをリストで読み、ハムにアクセスしていますidity値。以下は私が書いたコードです。

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']] 

どのような変更を行う必要がありますか? ありがとうございます! :)

+4

文字列を読んで、それらを 'int'sと比較しています! '75'と比較する前に' int'にキャスト: 'humidity = int(subList [2])' – schwobaseggl

答えて

2

あなたは75と比較する前intに文字列を変換する必要がありますなステートメント 'が' が

if int(humidity)>75: 
0

1オープンファイル:

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' 
関連する問題