如何将txt中的整数输出到可用于创建新类的表单中?

2024-06-16 14:42:02 发布

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

我目前有一个多项式类,可以这样创建:

P = Polynomial((6,14), (9,11), (-12, 3), (42,0)

如果你做了str(p),你会得到:

6x^14 + 9x^11 - 12x^3 + 42

现在我有一个txt文件,看起来类似于:

6 14
9 11
-12 3
42 0

我需要用一个函数来读取它,这个函数将输出一个新的多项式类,如上面所示

我当前的代码如下所示:

def read_polynomial(polyfilename):
    infileobj = open(polyfilename, 'r')
    final = []
    for line in infileobj.readlines():
        final.append(line.split())
    infileobj.close()
    return final

但它输出的列表如下所示:

[['6', '14'], ['9', '11'], ['-12', '3'], ['42', '0']]

我试图将它转换成一种可用的格式,让我在类中实现它的任何事情似乎都失败了。那么,我如何修复此代码来执行我的出价


Tags: 文件函数代码txtforreaddefline
3条回答

像这样使用*iterable(我已经将final修改为元组列表,而不是列表列表):

def read_polynomial(polyfilename):
    infileobj = open(polyfilename, 'r')
    final = []
    for line in infileobj.readlines():
        final.append(tuple(line.split())) # Append tuple rather than another list
    infileobj.close()
    return final

args = read_polynomial(polyfilename)
P = Polynomial(*args)

这个阅读代码对你有用吗

def read_polynomial(polyfilename):
    infileobj = open(polyfilename, 'r')
    final = []
    for line in infileobj.readlines():
        nums = line.split()
        final.append( (float(nums[0]), int(nums[1])) )
    infileobj.close()
    return final

使用with open()的更简洁版本:

def read_polynomial(path):
  final = []
  with open(path, 'r') as f:
    for line in f.readlines():
      nums = line.split()
      final.append( (float(nums[0]), int(nums[1])) )
  return final

您需要将值从字符串类型转换为整数类型。试试这个:

def read_polynomial(polyfilename):
    infileobj = open(polyfilename, 'r')
    final = []
    for line in infileobj.readlines():
        line = [int(x) for x in line.split()]
        final.append(line)
    infileobj.close()
    return final

相关问题 更多 >