【问题标题】:Finding the Maximum and Minimum value in python using loops使用循环在python中查找最大值和最小值
【发布时间】:2013-10-05 16:21:04
【问题描述】:

我有一个任务,我让用户输入尽可能多的分数,然后我必须计算最小值和最大值以及有多少人使用 for 循环获得这些分数。我计算了平均值和标准差:

elif user_option == 3:

    total = 0
    for val in scores_list:
        total = total + val
    average = total/ len(scores_list)
    print (average)
elif user_option == 2:
    total = 0
    for val in scores_list:
        total = total + val
    average = total/ len(scores_list)
    diffsquared = 0
    sum_diffsquared = 0
    for val in scores_list:
        diffsquared= (val - average)**2
        sum_diffsquared= diffsquared + sum_diffsquared
    stdev= sqrt((sum_diffsquared)/len(scores_list))
    print(stdev)

任何想法如何找到最小值和最大值?

【问题讨论】:

  • 一些重新格式化是为了:/。同时提供一个简短、独立且可运行的示例。
  • 另外,在 python 中,空格优于制表符
  • 您的if 声明有第一部分吗?因为你不能以elif开头...

标签: python for-loop python-3.3


【解决方案1】:

这样的?

min_val = float("inf")
max_val = -float("inf")
count_min = 0
count_max = 0

for val in scores_list:
    if val < min_val:
        min_val = val
        count_min = 1
    elif val == min_val:
        count_min += 1

    if val > max_val:
        max_val = val
        count_max = 1
    elif val == max_val:
        count_max += 1

print "Minimum score:", min_val
print "Maximum score:", max_val
print "Number of students with minimum score:", count_min
print "Number of students with maximum score:", count_max

编辑:正如@GL770 在 cmets 中所指出的, sys.maxint 仅在 Python 2.x 中可用。在 Python 2.x 中你可以做这样的事情。:

import sys
min_val = sys.maxint
max_val = -sys.maxint - 1

float("inf") 这个东西也可以在 Python 2.x 中使用,所以这个方法不是必需的。

【讨论】:

  • @GL770 感谢您告诉我。我改为float("inf")-float("inf")。那应该是 Python 3 兼容的。
  • 我认为您的 count_min、count_max 值不正确。想一想:scores = [6,6,6,7,7,7,8,8,9,3,3,3,2,2,2,1,1]
  • @bcollins 是的,这是有原因的,因为在您的代码中,如果找到新的最小值,count_min 永远不会重置为 1。也尝试使用该列表运行我的代码。有用。对我来说,它打印出来:Minimum score: 1 Maximum score: 9 Number of students with minimum score: 3 Number of students with maximum score: 1
  • 在您的 edited 列表中打印:Minimum score: 1 Maximum score: 9 Number of students with minimum score: 2 Number of students with maximum score: 1 这是正确的。我认为我的代码在正确性方面没有任何问题。
【解决方案2】:

内置函数 min() 和 max() 怎么样:

scores_min = min(scores_list)
scores_max = max(scores_list)

也不要忘记 numpy:

import numpy
scores_array = numpy.array(scores_list)
scores_mean = numpy.mean(scores_array)
scores_std = numpy.std(scores_array)
scores_min = numpy.min(scores_array)
scores_max = numpy.max(scores_array)

【讨论】:

  • 我无法使用内置函数。我必须使用循环
  • 我相当肯定他不允许使用内置插件或 numpy。
  • 啊,好吧,抱歉。这只是一个学术练习。
猜你喜欢
  • 2018-09-21
  • 2022-09-29
  • 2019-09-18
  • 2021-06-17
  • 1970-01-01
  • 2016-06-07
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多