Как найти целое число, которое делится на целое число 10? - PullRequest
0 голосов
/ 21 ноября 2018

Я пишу функцию "most_of", которая принимает список чисел в качестве аргумента.Цель функции - взять список, выполнить итерацию по нему и выяснить, делится ли большинство целых чисел списка на 10.

Так, например, если я передал аргумент:

[1,10,10,50,5]

Вывод будет:

True

Поскольку 3/5 целых чисел делятся на 10. Однако, если бы я передал:

 [1,2,55,77,6]

Вывод будетбыть:

 False

Поскольку 4/5 целых чисел в списке не делятся на 10.

Вот что я пробовал:

def most_of(lst):
    for i in lst:
        if lst[i] % 10 == 0:
           lst == True
        else:
           lst == False

Яв основном застрял в этой точке, потому что это не проверяет, делится ли большинство чисел на десять, просто делится.

Спасибо за помощь!

Ответы [ 4 ]

0 голосов
/ 21 ноября 2018

Цель функции - взять список, выполнить итерацию по нему и выяснить, делится ли большинство целых чисел списка на 10.

Ваш список будет содержать два видацелых чисел: те, которые делятся на 10, и те, которые не делятся.Вам нужно найти количество целых чисел в каждой из двух категорий, сравнить эти числа и вернуть соответственно True или False.Итак, ваша функция будет выглядеть следующим образом:

def most_of(lst):
    divisible_counter = 0
    non_divisible_counter = 0
    for element in lst:
        if element % 10 == 0:
            divisible_counter +=1
        else:
            non_divisible_counter += 1
    if divisible_counter > non_divisible_counter:
        return True
    else:
        return False

Конечно, весь приведенный выше код может быть значительно сокращен.Но я хотел показать алгоритм, который будет легче понять начинающим пользователям Python.

0 голосов
/ 21 ноября 2018

Небольшая модификация ответа Оскара:

def most_of(lst):
    return sum(1 if n % 10 == 0 else -1 for n in lst) >= 0

с такими же результатами курса

lst1 = [1,10,10,50,5]
lst2 = [1,2,55,77,6]

print(most_of(lst1))  # True
print(most_of(lst2))  # False
0 голосов
/ 21 ноября 2018

Вы назначаете свой список как бул после того, как проверили свой первый номер, но вы должны посчитать все числа, которые можно разделить на десять без остатка, и все остальные числа, а затем сравнить эти счетчики:

def most_of(lst):
    divideByTen = 0
    otherNumbers = 0
    for i in lst:
        if i % 10 == 0:
           divideByTen+=1
        else:
           otherNumbers+=1
    if(divideByTen > otherNumbers):
        return True
    else:
        return False


a = [1,10,10,50,5]
b = [1,2,55,77,6]

print(most_of(a))
print(most_of(b))
0 голосов
/ 21 ноября 2018

Подсчитайте, сколько целых чисел делится на десять, и проверьте, является ли это число «большинством», то есть, если оно больше или равно половине длины списков.Вот так:

def most_of(lst):
    num = sum(1 for n in lst if n % 10 == 0)
    return num >= len(lst) / 2.0

Например:

>>> most_of([1,10,10,50,5])
True
>>> most_of([1,2,55,77,6])
False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...