繁体   English   中英

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

[英]Appending, avg list, dict, key

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

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

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

说明:

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

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

编写一个程序,要求用户输入一些数字(正数,负数和零)。 您的程序不应要求用户输入固定数量的数字。 同样,它也不应询问用户想要输入的数字数量。 但是,它应该要求用户输入一些数字并以-9999(一个前哨值)结尾。 用户可以按任何顺序输入数字。 您的程序不应要求用户分别输入正数和负数。

然后,您的程序应使用输入的数字创建一个列表(确保在此列表中不包含前哨值(-9999)),并输出列表和包含以下键值对的字典(使用输入列表和上述内容)职能):

  • 键='AvgPositive':值=所有正数的平均值
  • 键='AvgNonPos':值=所有非正数的平均值
  • 键='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()))

您的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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM