Python 创建一个循环,询问值,存储值,然后打印平均值?

Python 创建一个循环,询问值,存储值,然后打印平均值?,python,python-3.x,Python,Python 3.x,我需要创建一个算法,从用户那里获取值(工资),然后计算平均工资(就像一个输入循环,存储所有输入值,直到键入停止命令)。然后我必须打印工资超过100英镑的人的百分比 我是Python新手 我成功地创建了输入循环,但不知道如何存储这些值,以后再计算平均值 print(“输入工资,完成后输入-1”) 工资=整数(输入(“键入工资”)) 计数=1 出口=-1 退出时!=工资: 工资=整数(输入(“输入工资:”) 计数+=1 def average(): 工资/盘点 如果工资==退出: 打印(平均) 在执

我需要创建一个算法,从用户那里获取值(工资),然后计算平均工资(就像一个输入循环,存储所有输入值,直到键入停止命令)。然后我必须打印工资超过100英镑的人的百分比

我是Python新手

我成功地创建了输入循环,但不知道如何存储这些值,以后再计算平均值

print(“输入工资,完成后输入-1”)
工资=整数(输入(“键入工资”))
计数=1
出口=-1
退出时!=工资:
工资=整数(输入(“输入工资:”)
计数+=1
def average():
工资/盘点
如果工资==退出:
打印(平均)

在执行
while
循环之前,您可以创建一个空列表来存储工资:

wageList = []
在循环中,您可以将每个工资添加到列表中(在下一个
输入之前)

最后,您可以得到平均值:

if len(wageList) == 0:
    print("No wages given")
else:
    print("Average was {}".format(sum(wageList) / len(wageList)))
通过使用列表的长度,您不需要存储计数


此外,有些代码是错误的和/或多余的:

def average():    
    wages / count    // You probably wanted to return this :-)

if wages == exit:    
    print(average)   // average is a function, you would want to use average()
我的建议是不要这样做,因为代码非常简单,可以在一段代码中完成(无需函数)


工资超过100英镑的人数可通过以下方式获得:

num = len([item for item in wagesList if item > 100])
但是,如果您想停留在Python的“更简单”的一端(不太像Python,但可能更符合这个类的级别),您可以使用一个循环:

num = 0
for item in wagesList:
    if item > 100:
        num += 1
然后百分比为(假设大小为非零,请检查是否与上面的相同):

我建议:

total = 0
count = 0
while True:
    inval = int(input("Type the Wage: "))
    if inval == -1:
        break
    total = total + inval
    count = count + 1
print("average is " + str(total / count))
试试这个

persons = []
wages_persons = []
print("Enter person name, when finished type exit")
person = input("Enter person name: ")
while person != 'exit':
    persons.append(person)
    print("Type the wages, when finished type -1")
    wages = int(input("Type the wage: "))
    wages_list = []
    while wages !=-1:
        wages = int(input("Type the wage: "))
        if wages!=-1:
            wages_list.append(wages)
    if wages_list:
        avg = sum(wages_list)/len(wages_list)
        print("Average of {} is {}".format(person,avg))
        wages_persons.append(avg)
    person = input("Enter person name: ")

wages_over_100 = [x for x in wages_persons if x>100]
print("Total {}% persons have wages avarage above 100$".format((len(wages_over_100)/len(wages_persons))*100))

这将符合您的期望。

好的,在我可以帮助您之前,这里是我的问题。我们需要更多的信息来解释需要什么。你希望它只接受一定数额的工资吗?例如,只有5个输入?或者你想让它一直持续到用户输入一个关键字吗?不,是指用户想要输入的数量,然后进行平均值。只是一小部分建议,在计算平均值之前,您可能需要检查
count==0
。@paxdiablo这是一个快速而肮脏的解决方案,因此我没有添加案例检查等。很高兴能帮助您解决问题!
total = 0
count = 0
while True:
    inval = int(input("Type the Wage: "))
    if inval == -1:
        break
    total = total + inval
    count = count + 1
print("average is " + str(total / count))
print("Type the wages, when finished type -1")
wages = int(input("Type the wage: "))
wages_list = []
while wages !=-1:
    wages = int(input("Type the wage: "))
    if wages!=-1:
        wages_list.append(wages)
if wages_list:
    print("Average is :",sum(wages_list)/len(wages_list))
persons = []
wages_persons = []
print("Enter person name, when finished type exit")
person = input("Enter person name: ")
while person != 'exit':
    persons.append(person)
    print("Type the wages, when finished type -1")
    wages = int(input("Type the wage: "))
    wages_list = []
    while wages !=-1:
        wages = int(input("Type the wage: "))
        if wages!=-1:
            wages_list.append(wages)
    if wages_list:
        avg = sum(wages_list)/len(wages_list)
        print("Average of {} is {}".format(person,avg))
        wages_persons.append(avg)
    person = input("Enter person name: ")

wages_over_100 = [x for x in wages_persons if x>100]
print("Total {}% persons have wages avarage above 100$".format((len(wages_over_100)/len(wages_persons))*100))