Python查找正平均值和查找负平均值

Python查找正平均值和查找负平均值,python,Python,我正在为学校做一个项目,不知道如何获得用户输入的正平均值和用户输入的负平均值,并将其显示出来。我认为我走在正确的轨道上,我觉得我只是错过了完成计划的一两步。这是我必须开始的: print("(enter '0' to stop)") cout_pos=0 count_neg=0 sum= 0.0 num=1 while num != 0: num = int(input("enter value: ")) if num > 0: sum = sum + n

我正在为学校做一个项目,不知道如何获得用户输入的正平均值和用户输入的负平均值,并将其显示出来。我认为我走在正确的轨道上,我觉得我只是错过了完成计划的一两步。这是我必须开始的:

 print("(enter '0' to stop)")
cout_pos=0
count_neg=0
sum= 0.0
num=1
while num != 0:
    num = int(input("enter value: "))
    if num > 0:
        sum = sum + num
        count_pos +=1
    if num < 0:
        sum = sum + num
        count_neg -=1


if sum == 0:
    print("no values were entered")
else:
    print('positive average: ' ,sum/(count_pos-1))
    print('negative average: ' ,sum/(count_neg))
print((输入“0”停止)
cout_pos=0
计数负=0
总和=0.0
num=1
而num!=0:
num=int(输入(“输入值:”)
如果num>0:
sum=sum+num
计数_pos+=1
如果num<0:
sum=sum+num
计数负-=1
如果总和=0:
打印(“未输入任何值”)
其他:
打印('正平均:',和/(计数位置1))
打印('负平均:',和/(计数负))

谢谢你的帮助

要使其正常工作,您需要为求和创建单独的变量,就像您对计数所做的那样,否则您将有重叠:

print("(enter '0' to stop)")
count_pos=0
count_neg=0
sum_pos= 0
sum_neg= 0
num=1
while num != 0:
    num = int(input("enter value: "))
    if num > 0:
        sum_pos = sum_pos + num
        count_pos +=1
    if num < 0:
        sum_neg = sum_neg + num
        count_neg -=1


if sum == 0:
    print("no values were entered")
else:
    print('positive average: ' ,sum_pos/(count_pos))
    print('negative average: ' ,sum_neg/(count_neg))

这是另一个版本:

def average(lst):
    """ Count average from the list of numbers """
    return sum(lst) / len(lst)


positive = []  # list of positive numbers
negative = []  # list of negative numbers
num = None

print("(enter '0' to stop)")
while True:
    try:  # try to enter float values
        num = float(input('enter value: '))
    except ValueError:  # non-number was entered
        print('please, enter only numbers')
        continue  # start from beginning of while loop

    if num > 0:  # if positive, append number to positive list
        positive.append(num)
    elif num < 0:  # if negative, append number to negative list
        negative.append(num)
    else:  # if zero, exit from the while loop
        break

# Use f-strings to print for Python 3.7 and higher
if len(positive):
    print(f'positive average: {average(positive)}')
if len(negative):
    print(f'negative average: {average(negative)}')
if len(positive) == 0 and len(negative) == 0:
    print('no values were entered')

更新:我确实修复了count\u pos类型。你需要两个
sum
变量,比如你的两个
count
变量。你还需要增加
count\u neg
而不是减少它(如果你想要平均值)。如果你不想有两个“sum”变量,你可以将所有输入附加到一个列表中,然后(当收集所有输入时)过滤正负值并计算相应的总和。谢谢大家的帮助!谢谢你的帮助!我已经为此工作了一段时间,我知道我已经接近了!很高兴提供帮助,请记住,如果希望将
负平均值
打印为负值,只需在最后一行的分子或分母上添加
减号即可。
def average(lst):
    """ Count average from the list of numbers """
    return sum(lst) / len(lst)


positive = []  # list of positive numbers
negative = []  # list of negative numbers
num = None

print("(enter '0' to stop)")
while True:
    try:  # try to enter float values
        num = float(input('enter value: '))
    except ValueError:  # non-number was entered
        print('please, enter only numbers')
        continue  # start from beginning of while loop

    if num > 0:  # if positive, append number to positive list
        positive.append(num)
    elif num < 0:  # if negative, append number to negative list
        negative.append(num)
    else:  # if zero, exit from the while loop
        break

# Use f-strings to print for Python 3.7 and higher
if len(positive):
    print(f'positive average: {average(positive)}')
if len(negative):
    print(f'negative average: {average(negative)}')
if len(positive) == 0 and len(negative) == 0:
    print('no values were entered')
(enter '0' to stop)
enter value: 1.5
enter value: 3.7
enter value: a
please, enter only numbers
enter value: 4.6
enter value: -2.78
enter value: -9.99
enter value: 0a
please, enter only numbers
enter value: 0.0
positive average: 3.266666666666667
negative average: -6.385