查找列表中的哪些值小于/大于数字

问题描述 投票:0回答:3

我已经看到了与此类似的主题,但在尝试了他们的方法之后,它仍然没有修复这个部分直到最后。从我在其他主题上看到的,值是不匹配的,但我一直在尝试修复它并尝试其他方法但没有成功。提前谢谢你的帮助。这是我的代码:

numbers = []

def calc():

    d=0
    m=0
    single_number=int(input("Enter a number: "))
    number = input("Enter a list of numbers: ")
    numbers = [int(i) for i in number.split()]
    summed =sum(numbers, 0)/len(numbers)
    print("Average: ", summed)
    minimum=min(numbers)
    maximum=max(numbers)
    print("Minimum", minimum)
    print("Maximum", maximum)
    if numbers > single_number:
        d=d+1
    else:
        m=m+1
    print("Amount of numbers in the list that are smaller than the 1st entered number:", m)
    print("Amount of numbers in the list that are bigger than the 1st number:", d)
print(calc())
python python-3.x list integer
3个回答
0
投票

你所缺少的只是一个循环:

for number in numbers: 
    if numbers > single_number:
        d=d+1
    else: # elif numbers < single_number: # what if numbers == single_number?
        m=m+1

虽然你可以做出改进。 d = d+1是正确的;我更喜欢d += 1

那么(如果你不介意两次循环你的列表):

d = sum(1 for number in numbers if number > single_number)
m = sum(1 for number in numbers if number < single_number)

会以紧凑的方式给你dm


0
投票

if numbers > single_number做的事情如下:

if [1, 2, 3, 4, 5, 6, 7] > 4

这没有任何意义。你想要一个for循环吗?

for number in numbers:
    if number > single_number:
        d += 1
    elif number < single_number:
        m += 1
    # else doesn't make sense here, since 4 is neither larger _nor_ smaller than 4.

0
投票

您可以使用列表推导来过滤,然后获取结果列表的长度:

d = len([n for n in numbers if n > single_number])
m = len(numbers) - d
© www.soinside.com 2019 - 2024. All rights reserved.