无法将字符串转换为浮点错误。 /建议的想法?

时间:2016-07-12 03:23:47

标签: python

def displaymsg(avg):
    DL=str("deans list")
    AP=str("academic probation")
    message=("no message")
    if (avg>3.5):#if input for avg is > 3.5 message will is = DL
        message=DL
    else:
        if (avg<2.0):#if avg is < 2.0 message is =AP
            message=AP
    return str(message)

gpa=[ ]

stu_data=open ("studentData.txt", encoding = "UTF-8")
firstData=()

for data in stu_data:
    if firstData==0:
        gpa.append(data)
        print("student name:", gpa[firstData])
        firstData=1

    else:
       gpa.append (float(data)) 
stu_data.close()
sumGpa=0
count=5
for index in range (1, count) :
   sumGpa=sumGpa+gpa[index]
   print(gpa[index])  
count=count-1
average=sumGpa/count
msg=displaymsg(average)
print(msg)

当我运行这个时,我得到一个无法将字符串转换为浮点错误。 studentData.txt文档中的内容是david smith,后跟数字3.2,3.1,3.4,3.3和3.5。

1 个答案:

答案 0 :(得分:1)

我发现您的代码有两个问题:

  1. 您将firstData初始化为元组。这一行

    如果firstData == 0:

  2. 永远不会成真。

    1. 您应该在try / except子句中包含此语句:

      gpa.append(float(data))

    2. 你得到异常的原因是因为1,因为你的if语句总是假的,所以文件中不是数字的第一行被传递给append语句,在那里它试图转换一个字符串没有数字到浮点数。

      这样的效用函数可能会有所帮助:

      def is_number(value):
          try:
              float(value)
              return True
          except ValueError:
              return False