Python将XML解析为HTML:不能将sequence乘以“float”类型的nonint

2024-09-27 07:29:05 发布

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

我是Python初学者,我正在做一个将XML文件解析为HTML文件的程序。该文件是关于学生记录,必须计算总分,我有麻烦,使它的功能。这是我第一次提出这样的问题,对不起,如果我做了不正确的格式

    def overallScore(Weights,studentScore):
         totalScore = 0
         totalWeight = 0
         for i in range(0,len(Weights)):
            Weights[i] = float(Weights[i])
            totalScore = totalScore + studentScore[i]*Weights[i]
            totalWeight = totalWeight + Weights[i]
         overall = totalScore/totalWeight
         overall = "%.2f" % overall
         overallString = '    <p class="overall">Overall : ' + overall + '</p>\n'
         return overallString
    import xml.sax
    def characters(self,data):
        if (self.inRecords):
            if (self.inStudents):
                if (self.inStudent):
                    if(self.inName):
                        self.studentNames.append(data.strip())
                    elif (self.inUsername):
                        self.studentUser.append(data.strip())
                    elif (self.inScores):
                        self.studentScore.append(data.strip().split(","))
            if (self.inCourse):
                if (self.inTitles):
                    self.Titles = data.strip().split(",")
                elif (self.inWeights):
                    self.Weights = data.strip().split(",")

self.outfile.write(overallScore(self.Weights,self.studentScore))

当我运行程序时,收到以下错误消息:

totalScore = totalScore + studentScore[i]*Weights[i]
TypeError: can't multiply sequence by non-int of type 'float'

我试着把它转换成int或float,但它们都不起作用。 以下是xml文件:

<?xml version="1.0" ?>
<records>
  <students>
    <student>
      <name>Sergey Brin</name>
      <username>brinsergey</username>
      <scores>0.0,90.0,95.0,94.0,0.0,99.0,92.0</scores>
    </student>
    <student>
      <name>Steve Wosniak</name>
      <username>signedbywoz</username>
      <scores>85.0,93.0,98.0,96.0,98.0,100.0,100.0</scores>
    </student>
  </students>
  <course>
    <titles>lab1,lab2,hw1,exam1,lab3,hw2,exam2</titles>
    <weights>3.0,3.0,4.0,6.0,3.0,4.0,10.0</weights>
  </course>
</records>

Tags: 文件nameselfdataifusernamefloatstudent
1条回答
网友
1楼 · 发布于 2024-09-27 07:29:05

studentScore[i]listtuple,而Weights[i]float;正如错误所说,不能将listtuple乘以float

试着在print(studentScore)的顶部放一个overallScore,这样你就能清楚地看到它是什么

相关问题 更多 >

    热门问题