首页 > 解决方案 > 错误“-: 'str' 和 'float' 的操作数类型不受支持?

问题描述

该代码可以完美地找到它引用的文件中数字的平均值,但是我似乎无法让它找到标准偏差。标准差公式为:平方根/(n1-a)^2+(n2-a)^2/m

- 一切都在平方根之下我找不到它的字符

-N1,N2.....Nm=列表中被引用的数字

-a=平均

-m=列表中数字的总数

这就是我所拥有的,

def main():
    numbersFile=open("RandomNumber.txt" , 'r')

    line=numbersFile.readline()
    total=0
    numberoflines=0

    while line != "":
        numberoflines+=1
        total+=int(line)
        line=numbersFile.readline().strip()
    average=total/numberoflines
    std=line-average
    deviation=(std**2)/numberoflines


    print("The average is: " , average)
    print("The standard deviation of the numbers is: " , deviation)


main()        

标签: pythonpython-3.x

解决方案


您的line变量是由返回的字符串file.readline()。您需要先将其转换为float第一个,然后才能使用另一个浮点数执行减法。

改变:

std=line-average

至:

std=float(line)-average

推荐阅读