我想创建一个程序,在输入新行之前请求输入。用户输入将在列表中。然后它将计算输入的平均值和标准偏差。我编写了以下代码,但它显示了stddev函数的一些数据类型错误
def main():
print("Enter the data, one value per line.\nEnd by entering empty line.")
a = []
prompt = ""
line = input(prompt)
while line:
a.append(float(line))
line = input(prompt)
meanfunction(a)
stdev(a)
print("The mean of given data was: ",meanfunction(a))
print("The standard deviation of given data was: ",stdev(a))
def meanfunction(data):
average = sum(data) / len(data)
average_f = "{:.2f}".format(average)
return average_f
def variance(data):
n = len(data)
mean = sum(data) / n
deviations = [(x - mean) ** 2 for x in data]
variance = sum(deviations) / (n)
variance_f = "{:.2f}".format(variance)
return variance_f
def stdev(data):
import math
var = variance(data)
std_dev = math.sqrt(var)
return std_dev
if __name__ == "__main__":
main()
修复了缩进后,问题似乎是返回行前面的
variance(data)
中的格式字符串。使用variance
的输出作为stdev
函数的输入,但variance
返回字符串输出。看起来meanfunction
也做了同样的事情一般来说,对于这些数学函数,最好让它们保持它们应该做的事情:返回一个数字,就像您已经使用
stdev
的返回所做的那样。在实际将其打印到屏幕上时,处理使其美观的问题另外,使变量名比“a”更具描述性也很好,特别是当我们来看我们的旧代码时!最后,我们通常希望把进口放在首位
相关问题 更多 >
编程相关推荐