0

我正在使用 python 版本 3。

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

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

我认为底部的“如果有”会将列表中的数字与平均值进行比较,但我不知道如何提取该值来打印它。你们为所有的帮助而摇滚。

#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:
4

3 回答 3

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
于 2013-03-01T06:54:39.070 回答
0

不幸的是,“如果有的话”不起作用。查看 any 函数的文档以了解它的作用。即使您的语法正确,它也不会做您想做的事。你想要的只是大于平均值的数字。您可以使用列表理解:[my_numbers 中数字的数字,如果数字 > 平均值]。或者你可以使用一个循环。

于 2013-03-01T06:56:05.123 回答
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

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

于 2013-03-01T07:16:40.900 回答