Задали задание. Не понимаю как решать. (Массивы данных).

Алекс1408

Новичок
Пользователь
Ноя 18, 2020
11
1
3
Помогите плиз. Не понял как решать задание. Буду рад если кто то поможет. Или подскажет что то.

Какое количество различных слов русского языка можно составить из букв слова «Ростелеком»?
Примеры: кот, стекло, лето. Используйте любой словарь русского языка.
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Не понял как решать задание.
Нужно взять словарь (список слов), пройти по нему циклом и определить сколько слов из него можно составить из букв слова «Ростелеком».
Вот пример:
Python:
# lst_ это пример словаря
lst_ = ['кот', 'стекло', 'лето', 'зима', 'космос', 'рост']
word = 'Ростелеком'.lower()

count = 0  # счетчик количества слов
# проходим в цикле по словарю
for s in lst_:
    w = word
    # сравниваем буквы в словах
    for i in s:
        # если буква не входит в слово - переходим к следующему
        if i not in w:
            break
        # если входит - исключаем букву из слова (чтобы не было повторов)
        w = w.replace(i, '', 1)
    # если все буквы входят в слово по одному разу
    else:
        print(s)  # выводим слово в консоль
        count += 1  # увеличиваем счетчик

print(count)
 
  • Мне нравится
Реакции: Алекс1408 и Student

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Словарь прилагаю
Словарь нужен в формате одно слово в строке. Ваш словарь нужно сначала привести в нужный формат, а потом также пройти по нему в цикле.
Вот пример:
Python:
with open('dictionary.txt', 'r', encoding='utf-8') as f:
    word = 'Ростелеком'.lower()
    count = 0  # счетчик количества слов
    # проходим в цикле по словарю из файла
    for s in f:
        w = word
        # сравниваем буквы в словах
        for i in s.strip():
            # если буква не входит в слово - переходим к следующему
            if i not in w:
                break
            # если входит - исключаем букву из слова (чтобы не было повторов)
            w = w.replace(i, '', 1)
        # если все буквы входят в слово по одному разу
        else:
            print(s)  # выводим слово в консоль
            count += 1  # увеличиваем счетчик

    print(count)
Пример словаря в прикрепленном файле.
 

Вложения

  • dictionary.txt
    11,6 КБ · Просмотры: 3
  • Мне нравится
Реакции: Student и Алекс1408

Алекс1408

Новичок
Пользователь
Ноя 18, 2020
11
1
3
Словарь нужен в формате одно слово в строке. Ваш словарь нужно сначала привести в нужный формат, а потом также пройти по нему в цикле.
Вот пример:
Python:
with open('dictionary.txt', 'r', encoding='utf-8') as f:
    word = 'Ростелеком'.lower()
    count = 0  # счетчик количества слов
    # проходим в цикле по словарю из файла
    for s in f:
        w = word
        # сравниваем буквы в словах
        for i in s.strip():
            # если буква не входит в слово - переходим к следующему
            if i not in w:
                break
            # если входит - исключаем букву из слова (чтобы не было повторов)
            w = w.replace(i, '', 1)
        # если все буквы входят в слово по одному разу
        else:
            print(s)  # выводим слово в консоль
            count += 1  # увеличиваем счетчик

    print(count)
Пример словаря в прикрепленном файле.
Спасибо огромное.
А в словаре как оставили 1 слово - это можно в блокноте сделать ? Или специальная программа или в питоне это сделали?)
 
  • Мне нравится
Реакции: Student

Алекс1408

Новичок
Пользователь
Ноя 18, 2020
11
1
3
Нужно взять словарь (список слов), пройти по нему циклом и определить сколько слов из него можно составить из букв слова «Ростелеком».
Вот пример:
Python:
# lst_ это пример словаря
lst_ = ['кот', 'стекло', 'лето', 'зима', 'космос', 'рост']
word = 'Ростелеком'.lower()

count = 0  # счетчик количества слов
# проходим в цикле по словарю
for s in lst_:
    w = word
    # сравниваем буквы в словах
    for i in s:
        # если буква не входит в слово - переходим к следующему
        if i not in w:
            break
        # если входит - исключаем букву из слова (чтобы не было повторов)
        w = w.replace(i, '', 1)
    # если все буквы входят в слово по одному разу
    else:
        print(s)  # выводим слово в консоль
        count += 1  # увеличиваем счетчик

print(count)
Спасибо большое за подробный пример. Благодарю.
 

Алекс1408

Новичок
Пользователь
Ноя 18, 2020
11
1
3
Нужно взять словарь (список слов), пройти по нему циклом и определить сколько слов из него можно составить из букв слова «Ростелеком».
Вот пример:
Python:
# lst_ это пример словаря
lst_ = ['кот', 'стекло', 'лето', 'зима', 'космос', 'рост']
word = 'Ростелеком'.lower()

count = 0  # счетчик количества слов
# проходим в цикле по словарю
for s in lst_:
    w = word
    # сравниваем буквы в словах
    for i in s:
        # если буква не входит в слово - переходим к следующему
        if i not in w:
            break
        # если входит - исключаем букву из слова (чтобы не было повторов)
        w = w.replace(i, '', 1)
    # если все буквы входят в слово по одному разу
    else:
        print(s)  # выводим слово в консоль
        count += 1  # увеличиваем счетчик

print(count)
Stud_55 возможно вы подскажете как тоже самое еще можно сделать со словарем русского языка в файле txt?

Словарь прилагаю. Часть загрузил. Полностью размер не дает загрузить.

Буду благодарен любой помощи с этим вопросом.
 

Вложения

  • dictionary.txt
    255,7 КБ · Просмотры: 5

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
А в словаре как оставили 1 слово - это можно в блокноте сделать ? Или специальная программа или в питоне это сделали?)
Отфильтровал с помощью питона.
Вот так примерно:
Python:
with open('dictionary.txt', 'r', encoding='utf-8') as f:
    with open('dictionary2.txt', 'w', encoding='utf-8') as f2:
        for s in f:
            if len(s) < 4:
                continue
            s = s.strip().split(',')[0].lower()
            s = s.split('.')[0]
            s = s.split(' ')[0]
            s = s.replace(':', '').replace('1', '')
            if s[-1] in ['2', '3']:
                continue
            if '-' in s:
                continue
            f2.write(s + '\n')
 

Форум IT Специалистов