Python计算学生统计数据

Python计算学生统计数据,python,Python,我正在尝试使用Python计算学生统计数据。除了最后的标准偏差部分外,一切似乎都很正常。我认为我对公式的解释是正确的,但显然不是。我一直得到6.63分,而不是实际的7.48分。我们将非常感谢您的帮助。更新:我算过了。结果表明,当我的代码生成summation=220时,总和实际上应该是279。也许这会帮助你们中的一些人,包括我,找到问题所在 nums=[] total= 0 count= 0 x = int(input("Enter a number (enter -1 to terminat

我正在尝试使用Python计算学生统计数据。除了最后的标准偏差部分外,一切似乎都很正常。我认为我对公式的解释是正确的,但显然不是。我一直得到6.63分,而不是实际的7.48分。我们将非常感谢您的帮助。更新:我算过了。结果表明,当我的代码生成summation=220时,总和实际上应该是279。也许这会帮助你们中的一些人,包括我,找到问题所在

nums=[]
total= 0
count= 0

x = int(input("Enter a number (enter -1 to terminate): "))
while x >= 0:
    if x <= 100:
        total = total + x
        count+=1
        nums.append(x)
    if x>100:
            print("Invalid entry.")
    x = int(input("Enter a number (enter -1 to terminate): "))


print(nums)
print("Number of scores: ", count)      

idx=0
while idx < count:
    newIndex = idx+1
    maximum = nums[idx]
    while newIndex < count:
        if(nums[newIndex] < maximum):
            maximum = nums[newIndex]
        newIndex+=1

    if maximum < nums[idx]:
        temp = nums[idx]
        nums[idx] = maximum
        nums[newIndex-1] = temp
    idx+=1
print("Maximum score: ", maximum)

idx= 0
while idx< count:
    newIndex= idx+1
    minimum= nums[idx]
    while newIndex < count:
        if (nums[newIndex]> minimum):
            minimum= nums[newIndex]
        newIndex+=1
    if minimum> nums[idx]:
        temp= nums[idx]
        nums[idx]= minimum
        nums[newIndex-1]= temp
    idx+=1
print("Minimum score: ", minimum)
average=total/count
print ("Average score: ", average)

summation=0
idx=0
while idx< count:
    value= nums[idx]
    if idx<count:
        summation += ((value-average)**2)
    idx+=1
print("Standard Deviation: ", int(summation/count)**0.5)
nums=[]
总数=0
计数=0
x=int(输入(“输入一个数字(输入-1终止):”)
当x>=0时:
如果x 100:
打印(“无效条目”)
x=int(输入(“输入一个数字(输入-1终止):”)
打印(nums)
打印(“分数:”,计数)
idx=0
当idx最小值):
最小值=nums[newIndex]
newIndex+=1
如果最小值>nums[idx]:
temp=nums[idx]
nums[idx]=最小值
nums[newIndex-1]=温度
idx+=1
打印(“最低分数:”,最低)
平均数=总数/计数
打印(“平均分数:”,平均)
总和=0
idx=0
当idx如果idx尝试将代码更改为:

(float(summation)/count)**0.5)

尝试将代码更改为:

(float(summation)/count)**0.5)
你犯了一个错误

    if(nums[newIndex] < maximum):
        maximum = nums[newIndex]
拉扯你的
nums
。。。如果设置
nums=[50,40,30,20,10]
并在idx
循环时运行第一个
,则返回
nums=[10,20,20,30]
。查找最大值不应更改基础数据!(为什么在循环中有一个循环来找到最大值?它应该只需要一次通过!)

事实上,您可以在单个过程中找到最大值和最小值,如下所示:

maximum = minimum = nums[0]  # initialize to the first value
idx = 1                      # start comparisons against the second value
while idx < count:
    if maximum < nums[idx]:
        maximum = nums[idx]
    if minimum > nums[idx]:
        minimum = nums[idx]
    idx += 1
print("Maximum score: ", maximum)
print("Minimum score: ", minimum)
maximum=minimum=nums[0]#初始化为第一个值
idx=1#开始与第二个值进行比较
当idxnums[idx]:
最小值=nums[idx]
idx+=1
打印(“最大分数:”,最大值)
打印(“最低分数:”,最低)
您在

    if(nums[newIndex] < maximum):
        maximum = nums[newIndex]
拉扯你的
nums
。。。如果设置
nums=[50,40,30,20,10]
并在idx
循环时运行第一个
,则返回
nums=[10,20,20,30]
。查找最大值不应更改基础数据!(为什么在循环中有一个循环来找到最大值?它应该只需要一次通过!)

事实上,您可以在单个过程中找到最大值和最小值,如下所示:

maximum = minimum = nums[0]  # initialize to the first value
idx = 1                      # start comparisons against the second value
while idx < count:
    if maximum < nums[idx]:
        maximum = nums[idx]
    if minimum > nums[idx]:
        minimum = nums[idx]
    idx += 1
print("Maximum score: ", maximum)
print("Minimum score: ", minimum)
maximum=minimum=nums[0]#初始化为第一个值
idx=1#开始与第二个值进行比较
当idxnums[idx]:
最小值=nums[idx]
idx+=1
打印(“最大分数:”,最大值)
打印(“最低分数:”,最低)


什么输入会导致7.48?总体标准偏差是总和((val avg)**2/n),样本标准偏差在分母项中使用n-1。。。这能解释差异吗?7.48是标准偏差的值,而Dan没有。我们应该找到总体标准偏差.hmmm,而idx应该得到7.48的输入是什么?总体标准偏差是总和((val avg)**2/n),样本标准偏差在分母项中使用n-1。。。这能解释差异吗?7.48是标准偏差的值,而Dan没有。我们应该找到总体标准偏差,而idx,输出仍然是6.63年。我只是觉得问题出在代码的其他地方你用Python吗?如果为true,则应在每个“/”运算符中添加“float”函数。我使用的是python 3。我认为标准偏差公式没有问题。我已经检查过你程序的最后一块了。问题是变量“nums”的内容在第三个块中被更改。你应该检查为什么你必须修改这个变量。输出仍然是6.63年。我只是觉得问题出在代码的其他地方你用Python吗?如果为true,则应在每个“/”运算符中添加“float”函数。我使用的是python 3。我认为标准偏差公式没有问题。我已经检查过你程序的最后一块了。问题是变量“nums”的内容在第三个块中被更改。你应该检查一下为什么要修改这个变量。谢谢你的帮助,休。但我们不应该使用函数。这就是为什么我不得不这么做的原因。此外,u建议的比较更改给了我错误的值。@乔:如果
nums[newIndex]
小于
最大值,为什么要将
max
设置为
nums[newIndex]
?这将导致一个较低的值,这有点违背了调用它的目的。但我们看到了一个挥之不去的问题,那就是它对标准差没有影响。我打印了列表的内容,它们正是我作为输入输入的内容。因此,很明显,在我的最后一个while循环中,有一些标准偏差被弄乱了,它会对标准偏差产生影响,因为实际上,您正在错误地修改列表中的数据,作为代码的一部分,以找到最大值。休是完全正确的。删除这两个循环并用他提供的代码替换它们。确实有效。感谢你们不仅帮助我解决了问题,还帮助我理解了这个悬而未决的问题。谢谢你!谢谢你的帮助,休。但我们不应该使用函数。这就是我被迫的原因