python中的数字分类

2024-07-05 14:40:30 发布

您现在位置: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()

这个简单的分类器有什么问题?在

谢谢你

干杯


Tags: import数字numrowprintelifbin2bin1
2条回答

问题是row[num]是一个字符串,而不是一个数字。将以下内容放在循环的顶部:

val = float(row[num])

然后使用val代替{}进行任何数值运算,包括比较。在

它是错误的,因为您正在从csv文件中读取字符串。当你比较一个字符串和一个数字,然后他们的类型的名称(!!!)进行比较。在

解决方案:先将row[num]转换为一个数字,然后再将其与浮点值进行比较。在

相关问题 更多 >