将列表中的数字与整数进行比较,然后返回数字

时间:2013-03-01 06:51:54

标签: python list python-3.x

我正在使用python版本3。

对于家庭作业,我试图允许用户输入五位数字,然后找到这些数字的平均值。我已经想到了那个部分(花了一个小时学习地图功能,非常酷)。

问题的第二部分是将列表中的每个元素与平均值进行比较,然后返回大于平均值的元素。

我认为底部的“if any”会将列表中的数字与Average进行比较,但我不知道如何将该值拉出来打印它。你们摇滚寻求所有的帮助。

#Creating a list
my_numbers = [input("Enter a number: ") for i in range(5)]

#Finding sum
Total = sum(map(int, my_numbers))

#Finding the average
Average = Total/5

print ("The average is: ")
print (Average)
print ("The numbers greater than the average are: ")

if any in my_numbers > Average:

3 个答案:

答案 0 :(得分:0)

您需要做的是遍历列表并打印出高于平均值的数字:

for i in my_numbers:
    if int(i) > Average:
        print(i)

为了简化操作,您可能还希望将my_numbers列表实际开始作为整数列表:

my_numbers = [int(input("Enter a number: ")) for i in range(5)]

现在我们可以摆脱map功能(不用担心,小时不会浪费,你会发现它在其他情况下也非常有用)。您也可以直接计算平均值而不计算总数,因为您不需要再次计算总数。

Average = sum(my_numbers) / 5

这意味着您可以更改for循环,以便将int(i)替换为i

您还可以创建一个包含列表推导的列表,然后打印出该列表中的值。

aboveAverage = [i for i in my_numbers if i > Average]
for i in aboveAverage:
    print i

答案 1 :(得分:0)

不幸的是,“如果有的话”不起作用。查看任何函数的文档以了解它的作用。即使您的语法正确,它也无法满足您的需求。你想要的只是大于平均数的数字。您可以使用列表理解:[my_numbers中的数字的编号,如果数字>平均]。或者你可以使用循环。

答案 2 :(得分:0)

#Creating a list
my_numbers = []
r = range(5)
for i in r:
    try:
        my_numbers.append(int(input("Enter a number: ")))
    except:
        print( 'You must enter an integer' )
        r.append(i)

#Finding sum
Total = sum(my_numbers)

#Finding the average
Average = Total/5
print ("The average is: ")
print (Average)
print ("The numbers greater than the average are: ")
print ([x for x in my_numbers if x>Average])

即使没人接听,我也相信你的代码最终会成功。

我的代码实际上是指出你应该预见到条目可能是非整数的,然后把指令管理到错误。
这里的基本方式是使用try except

请注意我每次发生错误时i添加r的方式,以便弥补已消耗的r元素。