对 python 中的数字进行分类
Classifying numbers in python
我尝试将 python 中的数字从 0.0 分类到 1.0。但是,所有数字都得到 else 条件。我需要每个数字来获得适当的条件,但即使数字是 0.3 或 0.2 也会得到最后一个垃圾箱。我做错了什么?
#!/usr/bin/python
import csv
import sys
import re
bin1=0;
bin2=0;
bin3=0;
bin4=0;
bin5=0;
bin6=0;
bin7=0;
bin8=0;
bin9=0;
bin10=0;
def Read():
with open (file_name) as csvfile:
readCSV = csv.reader (csvfile, delimiter=',')
for row in readCSV:
for num in range(1,2):
print row[num]
#Include in 10 bins
if 0.0 <= row[num] < 0.1:
bin1+=1;
print "bin1";
elif 0.1 <= row[num] < 0.2:
bin2+=1;
print "bin2"
elif 0.2 <= row[num] < 0.3:
bin3+=1;
print "bin3"
elif 0.3 <= row[num] < 0.4:
bin4+=1;
print "bin4"
elif 0.4 <= row[num] < 0.5:
bin5+=1;
print "bin5"
elif 0.5 <= row[num] < 0.6:
bin6+=1;
print bin6;
print "bin6"
elif 0.6 <= row[num] < 0.7:
bin7+=1;
print bin7;
print "bin7"
elif 0.7 <= row[num] < 0.8:
bin8+=1;
print "bin8"
elif 0.8 <= row[num] < 0.9:
bin9+=1;
print "bin9"
else:
print "bin10"
file_name = str(sys.argv[1])
print file_name
Read()
这个简单的分类器有什么问题?
谢谢
干杯
这是错误的,因为您正在从 csv 文件中读取字符串。当您将字符串与数字进行比较时,会比较它们类型的名称 (!!!)。
解决方案:先将 row[num]
转换为数字,然后再与浮点值进行比较。
问题是 row[num]
是一个字符串,而不是一个数字。将以下内容放在循环的顶部:
val = float(row[num])
然后使用 val
代替 row[num]
进行任何数值运算,包括比较。
我尝试将 python 中的数字从 0.0 分类到 1.0。但是,所有数字都得到 else 条件。我需要每个数字来获得适当的条件,但即使数字是 0.3 或 0.2 也会得到最后一个垃圾箱。我做错了什么?
#!/usr/bin/python
import csv
import sys
import re
bin1=0;
bin2=0;
bin3=0;
bin4=0;
bin5=0;
bin6=0;
bin7=0;
bin8=0;
bin9=0;
bin10=0;
def Read():
with open (file_name) as csvfile:
readCSV = csv.reader (csvfile, delimiter=',')
for row in readCSV:
for num in range(1,2):
print row[num]
#Include in 10 bins
if 0.0 <= row[num] < 0.1:
bin1+=1;
print "bin1";
elif 0.1 <= row[num] < 0.2:
bin2+=1;
print "bin2"
elif 0.2 <= row[num] < 0.3:
bin3+=1;
print "bin3"
elif 0.3 <= row[num] < 0.4:
bin4+=1;
print "bin4"
elif 0.4 <= row[num] < 0.5:
bin5+=1;
print "bin5"
elif 0.5 <= row[num] < 0.6:
bin6+=1;
print bin6;
print "bin6"
elif 0.6 <= row[num] < 0.7:
bin7+=1;
print bin7;
print "bin7"
elif 0.7 <= row[num] < 0.8:
bin8+=1;
print "bin8"
elif 0.8 <= row[num] < 0.9:
bin9+=1;
print "bin9"
else:
print "bin10"
file_name = str(sys.argv[1])
print file_name
Read()
这个简单的分类器有什么问题?
谢谢
干杯
这是错误的,因为您正在从 csv 文件中读取字符串。当您将字符串与数字进行比较时,会比较它们类型的名称 (!!!)。
解决方案:先将 row[num]
转换为数字,然后再与浮点值进行比较。
问题是 row[num]
是一个字符串,而不是一个数字。将以下内容放在循环的顶部:
val = float(row[num])
然后使用 val
代替 row[num]
进行任何数值运算,包括比较。