Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 51

Определить ASCII символ наиболее часто встречающийся в тексте

23.02.2016, 19:52. Показов 5086. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Как правильно решить данную задачу. Помогите пож-та.
Кликните здесь для просмотра всего текста

Задача: есть некий текст, в нижнем регистре, содержащий как минимум один ASCII символ, но при этом может содержать и другие символы, написать функцию, которая принимает на вход этот текст, а возвращает ASCII символ который наиболее часто встречается в тексте, если два символа встречаются с одинаковой частотой, вывести тот который ближе к началу алфавита.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from __future__ import unicode_literals, print_function
# набор ASCII символов в нижнем регистре
from string import ascii_lowercase
# изучить данный модуль
from collections import Counter
# переменная для хранения текста
text = 'AABBCCDDDвыашотдОО'
 
 
def func1(text):
    """
    Реализация с использованием цикла по тексту для подсчёта сколько раз встречается каждый символ
    """
    pass
 
 
def func2(text):
    """
    Реализация с использованием цикла по набору ASCII символов и использованием метода count у строк для подсчёта сколько раз встречается каждый символ
    """
    pass
 
 
def func3(text):
    """
    Реализация c использованием Counter для подсчёта сколько раз встречается каждый символ
    """
    pass
 
 
def func4(text):
    """
    Опциональный способ с использованием функции max и метода count у строк 
    """
    pass

Пока только сделал вот так:
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from string import ascii_letters
from collections import Counter
 
def func1(text):
    """
    Реализация с использованием цикла по тексту для подсчёта сколько раз встречается каждый символ
    """
    k = 0
    for x in text:
        if x in ascii_letters:
            k += 1
    return k
 
def func2(text):
    """
    Реализация с использованием цикла по набору ASCII символов
    и использованием метода count у строк для подсчёта сколько раз встречается каждый символ
    """
    k = 0
    for x in text:
        k += ascii_letters.count(x)
    return k
 
def func3(text):
    """
    Реализация c использованием Counter для подсчёта сколько раз встречается каждый символ
    """
    c = Counter()
    for x in text:
        if x in ascii_letters:
            c[x] += 1
    return c
 
def func4(text):
    """
    Опциональный способ с использованием функции max и метода count у строк
    """
    pass
 
def func(text):
    """
    Задача №3
    """
    c = func3(text)
    d = c.most_common()
 
    return d
 
text = 'AABBCCDDDвыашотдОО'
text1 = 'aaddddddddvvvvvssdss'
 
print(func(text1))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.02.2016, 19:52
Ответы с готовыми решениями:

ASCII символ, который наиболее часто встречается в тексте и ближе к началу алфавита
Задача: есть некий текст, содержащий как минимум один ASCII символ, но при этом может содержать и другие символы, написать функцию, которая...

Определить самый часто встречающийся символ и количество его повторений
Ввести массив символов из 11 элементов. Определить самый часто встречающийся символ и количество его повторений.

Определить наиболее часто встречающийся символ в тексте
дан текстовый файл необходимо определить наиболее часто встречающийся символ в тексте

5
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
23.02.2016, 21:56
  • Для любого способа я бы сначала отфильтровал текст
    Python
    1
    
    [x for x in text if x in ascii_letters]
  • C использованием функции max
    Python
    1
    
    max([x for x in text if x in ascii_letters], key=text.count)
  • Для всего остального стоит использовать словарь: ключ—символ, значение—количество символа в строке
1
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
23.02.2016, 22:13
раз вы используете Counter, может ему не по букве кормить, а сразу весь текст?

Python
1
2
3
4
>>> txt = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse nec nisl massa. Sed sit amet turpis ut nisi ultrices fermentum. Aliquam fermentum neque eros, vel semper leo dignissim auctor. Sed fermentum congue erat ac placerat. Sed at nibh eu justo blandit rutrum. Aenean metus augue, vulputate et tincidunt quis, tempor vel lacus. Integer quis lacus elementum orci volutpat feugiat vitae sed enim. Cras at sagittis tortor. Pellentesque cursus nibh quis ipsum facilisis, sit amet sollicitudin enim malesuada. Suspendisse iaculis mollis arcu a molestie. Aliquam id maximus odio, eget accumsan mauris. Vivamus sit amet fermentum diam. Cras quis pulvinar metus, sed viverra augue. Nulla pretium, arcu vel dictum ullamcorper, leo urna convallis quam, vitae posuere lorem elit at ipsum. Morbi tortor magna, pellentesque in rhoncus ac, euismod ac nunc."
 
>>> Counter(txt).most_common(1)[0][0]
' '
1
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 51
23.02.2016, 22:32  [ТС]
Спасибо. А как можно проверить какой из символов ближе к началу алфавита?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
23.02.2016, 22:35
Алфавит начинается с А, значит ближе всего к алфавиту

Python
1
2
>>> chr(ord('A')-1)
'@'
1
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 5
16.09.2016, 19:50
Помогите пожалуйста, первые 3 способа работают не корректно, не знаю как сравнить названия ключей словаря, пробовал распаковать словарь с помощью d.items(), при сравнение tuples ('D', 3)>('C', 3) True, а нам нужно наоборот. Спасибо
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from string import ascii_letters
from collections import defaultdict
from collections import Counter
 
text = 'AABBCCCDDDвыашотдОО'
 
def func1(text):
    """
    Реализация с использованием цикла по тексту для подсчёта сколько раз встречается каждый символ
    """
    text = [le for le in text if le in ascii_letters]
    d = defaultdict(int)
    for le in text:
        d[le] += 1
    max_value = None
    for item in d:
        if max_value == None:
            max_value = item
        max_value = item if item > max_value else max_value
    return max_value
 
def func2(text):
    """
    Реализация с использованием цикла по набору ASCII символов и использованием метода count у строк для подсчёта сколько раз встречается каждый символ
    """
    text = [le for le in text if le in ascii_letters]
    d = {}
    for le in text:
        d[le] = text.count(le)   
    max_value = None
    for item in d:
        if max_value == None:
            max_value = item
        max_value = item if item > max_value else max_value
    return max_value
 
def func3(text):
    """
    Реализация c использованием Counter для подсчёта сколько раз встречается каждый символ
    """
    text = [le for le in text if le in ascii_letters]
    c = Counter(text)
    return c.most_common(1)[0][0]
 
def func4(text):
    """
    Опциональный способ с использованием функции max и метода count у строк 
    """
    return max(ascii_letters, key=text.count)
 
print(func1(text))
print(func2(text))
print(func3(text))
print(func4(text))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.09.2016, 19:50
Помогаю со студенческими работами здесь

Определить наиболее часто встречающийся символ в файле
Всем вечер добрый , нужна помощь помогите кто может : Определить в файле наиболее часто встречающуюся в нем цифру. Полученное...

Определить наиболее часто встречающийся символ в файле
Условие такое: Дан файл, содержащий текст. Определить наиболее часто встречающуюся в нем букву латинского алфавита (независимо от...

Определить наиболее часто встречающийся символ в строке
Дана действительная матрица. Определить числа b1,…,bm, равные соответственно наименьшим значениям элементов строк. Определить наиболее...

Определить символ, встречающийся в файле наиболее часто
Помогите! Организовать файл символов из N компонент. Определить символ, встречающийся в файле наиболее часто. Вывести на экран этот...

Определить наиболее часто встречающийся символ в строке
Определить наиболее часто встречающийся символ в строке.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru