【问题标题】:calculating an average and comparison in python在python中计算平均值和比较
【发布时间】:2013-05-29 00:57:37
【问题描述】:

我有一组值 tgat 代表 postcodd 中的平均人数。这些是pcode1 = 239pcode2 = 245pcode3 = 210pcode4 = 217 现在是我卡住的地方。我假设平均值为allpcode = 220

有没有办法在 python 中编写代码,以便我可以将每个单独的 pcode 与总平均值进行比较?我想要做的就是将pcode1allpcode 进行比较,如果pcode1 高于/低于allpcode,则显示pcode1 的平均值并说pcode1 低于allpcode 或更高比allpcode。然后我想对所有其他 pcode 重复 :)

我想在屏幕上显示所有较低的平均值和所有较高的平均值。

所以像 pcode 3 和 4 的平均值低于所有 pcode 平均值,而 pcode 1 和 2 高于所有 p 码。

是否可以创建这样的代码,因为我不知道如何/从哪里开始?

【问题讨论】:

  • 您的问题标题为“计算平均值”。您可以使用(pcode1+pcode2+pcode3+pcode4)/4 计算您的值的平均值,或者更好的是,将它们放入dict 中,如我的回答sum(pcodes.values()) / len(pcodes)。但是你会得到 227.75,而不是你假设的 220。

标签: python compare average


【解决方案1】:

在这种情况下,您经常想要遍历所有一组值,通常最好使用单个 listdict 或其他集合变量,而不是一堆单独的变量。例如:

pcodes = {1: 239, 2: 245, 3: 210, 4: 217}

现在您可以编写如下代码:

pcodes = {1: 239, 2: 245, 3: 210, 4: 217}
allpcode = 220

for pcode, value in pcodes.items():
    if value < allpcode:
        print('code {} is lower than allpcode'.format(pcode))
    elif value > allpcode:
        print('code {} is higher than allpcode'.format(pcode))

如果你真的想要有单独的变量,你必须做更多的工作,像这样:

pcode1 = 239
pcode2 = 245
pcode3 = 210
pcode4 = 217
allpcode = 220

for i, value in enumerate((pcode1, pcode2, pcode3, pcode4)):
    if value < allpcode:
        print('code {} is lower than allpcode'.format(i + 1))
    elif value > allpcode:
        print('code {} is higher than allpcode'.format(i + 1))

【讨论】:

    【解决方案2】:

    如果您只想匹配值,可以使用列表:

    >>> pcode1 = 239
    >>> pcode2 = 245
    >>> pcode3 = 210
    >>> pcode4 = 217
    >>> lis = [pcode1, pcode2, pcode3, pcode4]
    >>> allpcode= 220
    
    >>> for i,x in enumerate(lis):
        if x < allpcode:
            print "pcode{} is less than {}".format(i+1,allpcode)
        elif x > allpcode:    
            print "pcode{} is greater than {}".format(i+1,allpcode)
    ...         
    pcode1 is greater than 220
    pcode2 is greater than 220
    pcode3 is less than 220
    pcode4 is less than 220
    

    更好地使用字典:

    因为变量只是对 python 中值的引用,所以你不能 访问变量名。如果你有很多pcodes,那么为每个人定义一个变量是解决这个问题的不好方法,使用字典会更干净。

    #create dictionary with keys named pcode1, pcode2,...     
    >>> dic = {'pcode1':239, 'pcode2':245, 'pcode3':210, 'pcode4':217}
    
    >>> for k,v in dic.items():
        if v < allpcode:
            print "{} is less than {}".format(k ,'allpcode')
        elif v > allpcode:    
            print "{} is greater than {}".format(k,'allpcode')
    ...         
    pcode3 is less than allpcode
    pcode2 is greater than allpcode
    pcode1 is greater than allpcode
    pcode4 is less than allpcode
    

    虽然字典不保持任何顺序,但您可能必须在此处collections.OrderedDictsorted 以获取特定顺序的键。

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-18
      • 1970-01-01
      相关资源
      最近更新 更多