python - 错误“-: '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()
解决方案
您的line
变量是由返回的字符串file.readline()
。您需要先将其转换为float
第一个,然后才能使用另一个浮点数执行减法。
改变:
std=line-average
至:
std=float(line)-average
推荐阅读
- python - 如何将 for 循环中的多个字符串输入添加到 Python 中的单个变量?
- r - 不能将 purrr 样式的 lambda 函数与 `select()` 一起使用(dplyr 1.0.0 dev)
- node.js - 有什么方法可以在不添加 CDN 的情况下将 Vue js 库加载到 Pug 模板中
- javascript - 将创建和更新购物车项目的逻辑放在客户端或服务器端?
- maven - Maven 项目在 Eclipse 和命令行中失败
- java - 用 RxJava 替换异步任务
- laravel - 未定义变量:电子邮件模板中的 $message
- python - 初学者 Python 问题:将列表对象转换为整数时遇到问题
- angular - 在 Angular 9 对话框中,材料在左端呈现为空白
- r - 将一列值四舍五入到另一列中最接近的值(R 代码)