Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
user20167
0 / 0 / 1
Регистрация: 17.11.2016
Сообщений: 25
1

Вернуть самое длинное слово, Вернуть словарь-статистику встречаемости букв

03.01.2017, 11:56. Просмотров 1141. Ответов 8

Всем добрый день ! Написал 2 функции:
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
def longest_word(text):
    """Вернуть самое длинное слово в 'text'."""
    if not isinstance(text, str):
        raise TypeError('text должен быть str')
    text_main = words(text)
    symb = []
    for i in text_main:
        symb.append(len(i))
    if len(symb) != 0:
        return text_main[symb.index(max(symb))]
    """Исключения:
      - TypeError: text - любой тип кроме str.
 
    Пример: longest_word("Это, конечно, неправда!?") == "неправда"
    """
 
def char_stats(text):
    """Вернуть словарь-статистику встречаемости букв в 'text'."""
    if not isinstance(text, str):
        raise TypeError('text должен быть str')
    text_str = ''.join(x for x in text if x.isalpha() or x == " ")
    text_main = ''.join(text_str.split())
    print(text_main)
    symb = {}
    for i in text_main:
        if i not in symb:
            symb[i] = dict(text_main.count(i))
    return symb
    """Исключения:
      - TypeError: text - любой тип кроме str.
    Пример: char_stats("папка") == {'а': 2, 'п': 2, 'к': 1}
    """
Но есть ошибки:
Вернуть самое длинное слово, Вернуть словарь-статистику встречаемости букв

Как их исправить ?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2017, 11:56
Ответы с готовыми решениями:

Подсчитать статистику встречаемости букв в тексте с учетом их регистра
Подсчитать статистику встречаемости букв в тексте с учетом их регистра. Я учусь в Питере. Здесь...

Написать программу выводящую статистику (в %) встречаемости букв в строке
Написать программу выводящую статистику (в %) встречаемости букв латинского алфавита в строке....

Определить самое длинное слово|предложение, удалить слово
на ввод нам дают текст. Задание: "Удалите самое длинное слово в самом длинном по числу слов...

Самое длинное слово
Дано предложение. Напечатать его самое длинное слово. Помогите, пожалуйста!

Самое длинное слово в строке
Задание: Дана строка. Найдите в этой строке самое длинное слово и выведите его. Если в строке...

8
id_2020
20 / 20 / 17
Регистрация: 12.12.2015
Сообщений: 71
03.01.2017, 13:34 2
Python
1
2
3
4
5
6
7
8
9
10
11
def char_stats(text):
    if not isinstance(text, str):
        raise TypeError('text должен быть str')
    text_str = ''.join(x for x in text if x.isalpha() or x == " ")
    text_main = ''.join(text_str.split())
    print(text_main)
    symb = {}
    for i in text_main:
        if i not in symb:
            symb[i] = text_main.count(i)###
    return symb
А в первом скажи откуда ты взял words в строке
Python
1
text_main = words(text)
1
user20167
0 / 0 / 1
Регистрация: 17.11.2016
Сообщений: 25
03.01.2017, 14:08  [ТС] 3
Извиняюсь words
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def clean(text):
    """Вернуть строку 'text' без знаков препинания.
    Исключения:
      - TypeError: text - любой тип кроме str."""
    if not isinstance(text, str):
        raise TypeError('text должен быть str')
    return ''.join(x for x in text if x.isalpha() or x == " ")
 
    """Пример: clean("Это, конечно, неправда!?") == "Это конечно неправда"
    """
def words(text):
    """Вернуть слова из 'text' в виде кортежа."""
    if not isinstance(text, str):
        raise TypeError('text должен быть str')
    new_text = clean(text)
    return tuple(new_text.split())
    """Исключения:
      - TypeError: text - любой тип кроме str.
 
    Пример: words("Это, конечно, неправда!?") == ('Это', 'конечно', 'неправда')
    """
Добавлено через 4 минуты
Ответ чуть выше
0
Jabbson
Эксперт по компьютерным сетям
3449 / 2493 / 778
Регистрация: 03.11.2009
Сообщений: 7,937
Записей в блоге: 3
03.01.2017, 15:51 4
Лучший ответ Сообщение было отмечено user20167 как решение

Решение

words:

Python
1
2
3
4
def words(text):
    if not isinstance(text, str):
        raise TypeError('text должен быть str')
    return (*(clean(text).split()),)
1
03.01.2017, 15:51
id_2020
20 / 20 / 17
Регистрация: 12.12.2015
Сообщений: 71
03.01.2017, 21:18 5
Функция longest_word рабочая
Python
1
2
3
4
5
6
7
8
9
def longest_word(text):
    if not isinstance(text, str):
        raise TypeError('text должен быть str')
    text_main = words(text)
    symb = []
    for i in text_main:
        symb.append(len(i))
    if len(symb) != 0:
        return text_main[symb.index(max(symb))]
Python
1
2
3
>>> longest_word("Это, конечно, неправда!?")
'неправда'
>>>
если есть ошибки, то проблема не в функции
1
shsv
415 / 280 / 191
Регистрация: 20.05.2016
Сообщений: 588
03.01.2017, 22:13 6
Кажется, longest_word должна возвращать строку влюбом случае, даже если len(symb) == 0, - возвращаемая строка должна быть пустой
1
Garry Galler
2066 / 1558 / 604
Регистрация: 28.10.2013
Сообщений: 4,026
03.01.2017, 23:07 7
Python
1
2
3
4
5
6
def longest_word(text):
    """Отстортировать слова по длине и вернуть наибольшее"""
    w = sorted(words(text),key=len, reverse=True)
    result = ""
    if w: result = w[0]
    return result
Добавлено через 1 минуту
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def stats_letters(text):
    """Вернуть словарь с частотой употребления букв в тексте,
       предварительно очистив его от знаков пунктуации.
    """
    from collections import defaultdict
    text = clean(text.lower())
    d = defaultdict(int)
    for x in text:
         if x.isalpha():
            d[x]+=1
    return d
 
#P.S. С Counter будет еще проще.
1
Jabbson
Эксперт по компьютерным сетям
3449 / 2493 / 778
Регистрация: 03.11.2009
Сообщений: 7,937
Записей в блоге: 3
03.01.2017, 23:46 8
Цитата Сообщение от Garry Galler Посмотреть сообщение
def longest_word(text):
* * """Отстортировать слова по длине и вернуть наибольшее"""
или

Python
1
2
3
def longest_word(text):
    """Отстортировать слова по длине и вернуть наибольшее"""
    return max(words(text), key=len)
2
user20167
0 / 0 / 1
Регистрация: 17.11.2016
Сообщений: 25
05.01.2017, 04:02  [ТС] 9
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
def clean(text):
    """Вернуть строку 'text' без знаков препинания.
    Исключения:
      - TypeError: text - любой тип кроме str."""
    if not isinstance(text, str):
        raise TypeError('text должен быть str')
    return ''.join(x for x in text if x.isalpha() or x == " ")
 
 
def words(text):
    """Вернуть слова из 'text' в виде кортежа."""
    if not isinstance(text, str):
        raise TypeError('text должен быть str')
    new_text = clean(text)
    return tuple(new_text.split())
 
 
def longest_word(text):
    """Вернуть самое длинное слово в 'text'."""
    if not isinstance(text, str):
        raise TypeError('text должен быть str')
    text_main = words(text)
    symb = []
    for i in text_main:
        symb.append(len(i))
    if len(symb) != 0:
        return text_main[symb.index(max(symb))]
    else:
        return ""
0
05.01.2017, 04:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2017, 04:02

Найти в тексте самое длинное слово
Доброго времени суток. Ребят, помогите, пожалуйста. Необходимо определить самое длинное слово...

Найти самое длинное слово в тексте
Как можно написать код,который определяет самое длинное слово в тексте?(Если можно,то в не в 1-3...

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru