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。
答案 0 :(得分:1)
我发现您的代码有两个问题:
您将firstData初始化为元组。这一行
如果firstData == 0:
永远不会成真。
您应该在try / except子句中包含此语句:
gpa.append(float(data))
你得到异常的原因是因为1,因为你的if语句总是假的,所以文件中不是数字的第一行被传递给append语句,在那里它试图转换一个字符串没有数字到浮点数。
这样的效用函数可能会有所帮助:
def is_number(value):
try:
float(value)
return True
except ValueError:
return False