附加,平均列表,字典,键

时间:2013-11-27 19:07:49

标签: python python-3.x

我正在尝试学习Python,但我遇到了一个练习问题。

  • 已回答*第一个问题:我理解如何获得列表的平均值,但是有更好的循环使用吗?

第二个问题:在我的第二个函数中,为什么我不在int中追加大于零的x

说明:

  

实现以下三个功能(您应该使用适当的功能   循环构造来计算平均值):

     
      
  • allNumAvg(numList):获取一个数字列表并返回列表中所有数字的平均值。
  •   
  • posNumAvg(numList):获取一个数字列表,并返回列表中所有大于零的数字的平均值。
  •   
  • nonPosAvg(numList):获取一个数字列表,并返回列表中所有小于或等于零的数字的平均值。
  •   
     

编写一个程序,要求用户输入一些数字(正数,   否定和零)。您的程序不应该要求用户输入   固定数量的数字。它也不应该要求的数量   用户想要输入的号码。但它应该要求用户   输入几个数字并以-9999(哨兵值)结束。用户   可以按任何顺序输入数字。你的程序不应该问   用户分别输入正数和负数。

     

然后你的程序应该创建一个包含输入数字的列表(make   确保不要在此列表中包含sentinel值(-9999)和   输出列表和具有以下键值对的字典   (使用输入列表和上述功能):

     
      
  • Key ='AvgPositive':值=所有正数的平均值
  •   
  • Key ='AvgNonPos':值=所有非正数的平均值
  •   
  • Key ='AvgAllNum':值=所有数字的平均值示例运行:
  •   
     

输入一个数字(-9999结束):4输入一个数字(-9999结束): - 3   输入一个数字(-9999结束): - 15输入一个数字(-9999结束):0   输入一个数字(-9999结束):10输入一个数字(-9999结束):22   输入一个数字(-9999结束): - 9999

     

输入的所有数字列表为:[4, -3, -15, 0, 10, 22]

     

平均字典为:{'AvgPositive': 12.0, 'AvgNonPos': -6.0, 'AvgAllNum': 3.0}

def nums():
    values = []

    while -9999 not in values:
        x = int(input("Enter any amount of numbers or -9999 to quit: "))

        values.append(x)
    values.remove(-9999)

    return values

def allNumAvg(values):
    average = 0
    sum = 0
    for n in values:
        sum = sum + n
        average = sum / len(values)

    return average

def posNumAvg(values):
    x = []
    average = 0
    sum = 0

    if int in values > 0:
        x.append(int)

    print(x)

print(posNumAvg(nums()))

1 个答案:

答案 0 :(得分:0)

您的allNumAvg功能需要更改:

def allNumAvg(values):
    average = 0
    sum = 0
    for n in values:
        sum = sum + n

    # this shouldn't happen inside the loop
    average = sum / len(values)

    return average

我不知道为什么你会这样写,而不仅仅是return sum(values)/len(values)