将列表中的数字与整数比较,并返回数字
我正在使用Python 3版本。
为了完成作业,我想让用户输入五个数字,然后计算这些数字的平均值。我已经搞定了这部分(花了一个小时学习map函数,真不错)。
问题的第二部分是将列表中的每个数字与平均值进行比较,然后找出那些大于平均值的数字。
我觉得底部的“if any”会将列表中的数字与平均值进行比较,但我不知道怎么把这个值提取出来打印出来。你们的帮助太棒了。
#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
你需要做的就是遍历这个列表,然后打印出那些高于平均值的数字:
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
0
很遗憾,“if any”这个写法不管用。你可以看看any函数的文档,了解它的作用。即使你的语法正确,它也不会实现你想要的效果。你想要的是只找出那些大于平均值的数字。你可以用一种叫做列表推导式的方法:[number for number in my_numbers if number > Average]。或者你也可以用循环来实现。
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
的元素。