我正在尝试学习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()))
答案 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)
。