根据Python中的值对一组数字进行分类

2024-10-01 17:25:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python编写一个循环,它读取一个包含50个数字的文本文件,对这些数字进行排序,并根据它们的值将它们分配给不同的变量。我希望变量A包含小于2的值,变量B包含2到2.1的值,变量c包含2.1到2.25的值,变量d包含2.25到2.5的值,变量e包含2.25到2.5的值。

到目前为止,我的代码如下:

import os
import numpy
os.chdir('/Users/DevEnv')

dispFile = open('output1.txt')
displacement = dispFile.readlines()
dispFile.close()

displacement = [float(i.strip()) for i in displacement]


for i in range (0,50):
   displacementval = displacement[i]
   if i<2 displacementval()=a():

但是,当我尝试运行这个时,我得到了一个无效的语法错误。我是python和编程新手,希望能得到任何帮助!


Tags: 代码inimportnumpyfor排序os数字
3条回答
import os
import numpy
os.chdir('/Users/DevEnv')

dispFile = open('output1.txt')
displacement = dispFile.readlines()
dispFile.close()

displacement = [float(i.strip()) for i in displacement]
a = []
b = []
c = []
d = []
e = []

for i in displacement:
    if i <2:
        a.append(i)
    elif i < 2.1:
        b.append(i)
    elif i < 2.25:
        c.append(i)
    elif i< 2.5:
        d.append(i)
    else:
        e.append(i)

别忘了实例化列表,行if i<2 displacementval()=a():没有任何意义。在

您需要将变量abcd、和{}初始化为list

import os
import numpy
os.chdir('/Users/DevEnv')

dispFile = open('output1.txt')
displacement = dispFile.readlines()
dispFile.close()

displacement = [float(i.strip()) for i in displacement]

a = []
b = []
c = []
d = []
e = []

for displacementval in displacement:
   if displacementval < 2:
        a.append(displacementval)
   elif displacementval < 2.1:
        b.append(displacementval)
   # ... the rest is similar, so omitted
print a
print b

我建议您阅读官方的Python tutorial,这样您就可以首先了解Python语法了。在

当您掌握了以上初学者友好解决方案的窍门后,请考虑看一下bisect。在

您可以通过对链接示例进行一些语义修改来解决您的问题。在

from bisect import bisect

def grade(score, breakpoints=[2, 2.1, 2.25, 2.5], marks='abcde'):
        i = bisect(breakpoints, score)
        return marks[i]

a,b,c,d,e = [], [], [] ,[], []
lists = [a,b,c,d,e]
marks='abcde'

r = map(lambda x: x / 10.0, range(0, 501, 1))

for item in [(grade(score),score) for score in r ]:
    l = marks.index(item[0])
    lists[l].append(item[1])

grade(),对于一个给定的数字,它会问,如果要在断点中插入它,它将在哪个索引处运行?它将返回marks[index]。例如,如果给它一个分数1,它将计算出1属于2之前断点的索引0,因此它将返回marks[0]=a

print语句将为您提供一个元组列表,其中包含(字母mark,mark分配给的值)。在

就像我说的,这是更先进的,你应该在掌握了基本概念之后再去理解它,但是值得一看,让你的思想稍微弯曲一下。在

相关问题 更多 >

    热门问题