python if-else 语句仅在 if 条件下返回 true
python if-else statement returning true only for if condition
我正在使用 python 从文件中读取数字天气数据,然后检查湿度条件。如果湿度小于或等于 75,则湿度应重写为 "low",如果湿度大于 75,则应重写为 "high"。以下是我在文件中的数据。
展望,温度,湿度,风,permission_to_play
- sunny,85,85,FALSE,no
- 晴天,80,90,真,没有
- 阴,83,86,FALSE,是
- 下雨,70,96,FALSE,是
- 下雨,68,80,FALSE,是
- 下雨,65,70,真,没有
- 阴,64,65,TRUE,是
- sunny,72,95,FALSE,no
- 晴天,69,70,假,是
- 下雨,75,80,FALSE,是
- 晴天,75,70,真实,是
- 阴,72,90,TRUE,是
- 阴,81,75,FALSE,是
- 下雨,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'
我正在使用 python 从文件中读取数字天气数据,然后检查湿度条件。如果湿度小于或等于 75,则湿度应重写为 "low",如果湿度大于 75,则应重写为 "high"。以下是我在文件中的数据。
展望,温度,湿度,风,permission_to_play
- sunny,85,85,FALSE,no
- 晴天,80,90,真,没有
- 阴,83,86,FALSE,是
- 下雨,70,96,FALSE,是
- 下雨,68,80,FALSE,是
- 下雨,65,70,真,没有
- 阴,64,65,TRUE,是
- sunny,72,95,FALSE,no
- 晴天,69,70,假,是
- 下雨,75,80,FALSE,是
- 晴天,75,70,真实,是
- 阴,72,90,TRUE,是
- 阴,81,75,FALSE,是
- 下雨,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'