Python甚至在注释中也得到了无效的错误

2024-04-24 07:55:38 发布

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

我想读取一个包含两列的.csv文件。前者代表索引名,后者代表相应的供应。然后我想用alpha列表中表示的一些权重乘以供给。但是我得到一个错误

 Can't multiply sequence by non-int of type 'float' 

在我打电话的队伍里作家。写作. 你知道吗

从我从google收集到的信息来看,这是因为,[5]*3创建了一个包含3个元素的列表,值为5,这是我不想要的。我看到其他人通过循环解决了这个问题,在这个例子中,我在alpha中。除了以这种方式做这件事,还有别的方法吗?或者,当我对每个迭代中的一个值不感兴趣时,我现在是如何做的,我对它们同时感兴趣。你知道吗

我的代码如下:

#! /usr/bin/python
import csv
import math

writer = open("C:\\Users\\Guda\\Documents\\manipulerat3.csv", "w")
alpha = [0.16,0.13,0.13,0.20]

with open("C:\\Users\\Guda\\Documents\\manipulerat2.csv", "r") as f:
    reader = csv.reader(f, delimiter ="\t")
    for row in reader:
        a = float(row[1])
        a = int(math.ceil(a))
        writer.write("%s\t\%s\t%s\%s\t%s\n" % (row[0],alpha[0]*a,alpha[1]*a,alpha[2]*a, alpha*alpha[3]))

Tags: csvimportalpha列表代表mathopenfloat
2条回答

看起来您想要在alpha*alpha[3]中实现的是将所有元素乘以第四个元素。看起来您还想在末尾将这个结果作为字符串输出(我假设以制表符分隔)。如果是这样的话,那么您可以将以下内容替换为alpha*alpha[3]

"\t".join(str(val * alpha[3]) for val in alpha)

试试writer.write("%s\t\%s\t%s\%s\t%s\n" % (row[0],alpha[0]*a,alpha[1]*a,alpha[2]*a, alpha[3]*a))

您的代码中有一个输入错误,导致列表alpha与alpha相乘[3]。因为alpha[3]是一个float,所以您得到了上面提到的错误。你知道吗

相关问题 更多 >