как сделать чтобы функция возвращала наиболее часто встречающиеся номера

(Если два или более чисел встречаются одинаковое количество раз, оба значения должны быть отмечены и возвращены. ):

    str_ = '9, 3, 0, 3, 9, 2, 4, 9'
    def most_used_numbers(numbers):

       numbers_used = {}
       numbers_list = eval(numbers)
       print(numbers_list)

       for elem in numbers_list:
           if elem in numbers_used:
               numbers_used[elem] += 1
           else:
               numbers_used[elem] = 1
       return numbers_used

    print(most_used_numbers(str_))

Ответы (1 шт):

Автор решения: ΝNL993

Как вы и просили, если одно самое большое число, тогда вернуть его, если несколько, тогда вернуть массив, но если честно не понимаю зачем вам получать единственное число, лучше ведь всё-таки всегда массив. (Если что я плохо знаю Python, наверное где-то что-то можно было сократить)

str_ = '9, 3, 0, 3, 9, 2, 4, 9'
str2_ = '3, 3, 2, 4, 9, 0'

def most_used_numbers(numbers):

        numbers_used = {}
        numbers_list = numbers.split(', ')
        biggest_num = float('-inf')
        big_nums = []

        for elem in numbers_list:
            if elem in numbers_used:
                numbers_used[elem] += 1
            else:
                numbers_used[elem] = 1

        for elem in numbers_list:
            if elem > biggest_num:
                biggest_num = elem
                big_nums = [int(elem)]
            elif elem == biggest_num:
                big_nums.append(int(elem))

        if len(big_nums) > 1:
            return big_nums
        else:
            return biggest_num

print(most_used_numbers(str_))
print(most_used_numbers(str2_))

Объяснение

Объявил доп. переменные biggest_num (по стандарту отрицательная бесконечность) и big_nums где будут сохраняться наши самые большие числа. Я поместил код с проверкой в отдельный цикл для читаемости, но вы смело можете переносить его в тот цикл, что был у вас ранее. В if делается проверка на то является ли число больше чем самое большое число (по стандарту идёт проверка на то является ли число больше чем минус бесконечность), далее самым большим числом делаем число которые прошло проверку и перезаписываем имеющийся массив в переменной big_nums чтобы в будущем стирались прошлые записанные числа. Если же элемент равняется самому большому число, то тогда добавляем его в массив больших чисел. В конце идёт проверка на длину массива, если длина массива больше чем 1 элемент, тогда вернуть массив, в противоположном случае, вернуть самое большое число.

→ Ссылка