Python计算学生统计数据
我正在尝试使用Python计算学生统计数据。除了最后的标准偏差部分外,一切似乎都很正常。我认为我对公式的解释是正确的,但显然不是。我一直得到6.63分,而不是实际的7.48分。我们将非常感谢您的帮助。更新:我算过了。结果表明,当我的代码生成summation=220时,总和实际上应该是279。也许这会帮助你们中的一些人,包括我,找到问题所在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
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循环中,有一些标准偏差被弄乱了,它会对标准偏差产生影响,因为实际上,您正在错误地修改列表中的数据,作为代码的一部分,以找到最大值。休是完全正确的。删除这两个循环并用他提供的代码替换它们。确实有效。感谢你们不仅帮助我解决了问题,还帮助我理解了这个悬而未决的问题。谢谢你!谢谢你的帮助,休。但我们不应该使用函数。这就是我被迫的原因