简体   繁体   English

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

[英]Finding which values in a list are smaller/greater than a number

I've seen topics similar to this, but after trying out their methods it still didn't fix the part from if till the end. 我见过类似这样的主题,但在尝试了他们的方法之后,它仍然没有解决的部分,如果从直到结束。 From what I read on other topics, the values are mismatched, yet I've been trying to fix it and trying out other methods with no success. 从我在其他主题上阅读的内容来看,这些值不匹配,但是我一直在尝试对其进行修复,并尝试其他方法都没有成功。 Thank you for your help in advance. 提前谢谢你的帮助。 Here's my code: 这是我的代码:

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())

all you are missing is a loop: 您所缺少的只是一个循环:

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

there are improvements you could make though. 您可以做出一些改进。 d = d+1 is correct; d = d+1是正确的; i prefer d += 1 though. 我更喜欢d += 1

then (if you don't mind looping over your list twice): 然后(如果您不介意两次遍历列表):

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

would give you d and m in a compact way. 会以紧凑的方式给您dm

if numbers > single_number is doing something like: if numbers > single_number正在执行以下操作:

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

That doesn't make any sense. 那没有任何意义。 Do you want a for loop? 您是否需要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.

You could use a list comprehension to filter and then get the length of the resulting list: 您可以使用列表推导进行过滤,然后获取结果列表的长度:

d = len([n for n in numbers if n > single_number])
m = len(numbers) - d

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM