Как найти повторы в строке python

Given a string, find all the duplicate characters which are similar to each other. Let us look at the example. 

Examples:

Input : hello
Output : l

Input : geeksforgeeeks
Output : e g k s

Naive approach:

The idea is to use a dictionary to keep track of the count of each character in the input string. The program iterates through the string and adds each character to the dictionary, incrementing the count if the character is already present in the dictionary. After iterating through the string, the program then iterates through the dictionary to find characters with a count greater than 1, indicating that they are duplicates. These duplicate characters are stored in a list and returned as the output.

Implementation:

Python3

def duplicate_characters(string):

    chars = {}

    for char in string:

        if char not in chars:

            chars[char] = 1

        else:

            chars[char] += 1

    duplicates = []

    for char, count in chars.items():

        if count > 1:

            duplicates.append(char)

    return duplicates

print(duplicate_characters("geeksforgeeks"))

Output

['g', 'e', 'k', 's']

Time complexity: O(n), where n is the length of the input string. 
Auxiliary space: O(k), where k is the number of distinct characters in the input string.

We have discussed a solution in the below post. Print all the duplicates in the input string We can solve this problem quickly using the python Counter() method. 

The approach is very simple. 

  1. Create a dictionary using the Counter method having strings as keys and their frequencies as values.
  2. Declare a temp variable.
  3. Print all the indexes from the keys which have values greater than 1. 

Python

from collections import Counter

def find_dup_char(input):

    WC = Counter(input)

    for letter, count in WC.items():

        if (count > 1):

            print(letter)

if __name__ == "__main__":

    input = 'geeksforgeeks'

    find_dup_char(input)

Time Complexity: O(n), where n is the length of the string
Auxiliary Space: O(n) // since we are creating a dictionary and at worst case all elements will be stored inside it.

Approach : Using count() method

Python3

def find_dup_char(input):

    x=[]

    for i in input:

        if i not in x and input.count(i)>1:

            x.append(i)

    print(" ".join(x))

if __name__ == "__main__":

    input = 'geeksforgeeks'

    find_dup_char(input)

Time Complexity: O(n), where n is the length of the string
Auxiliary Space: O(n) // since we are using an extra list and in the worst case all elements will be stored inside it.

Approach : Using filter() method

Python

def find_dup_char(input):

    x = filter(lambda x: input.count(x) >= 2, input)

    print(' '.join(set(x)))

if __name__ == "__main__":

    input = 'geeksforgeeks'

    find_dup_char(input)

Time Complexity: O(n), where n is the length of the string
Auxiliary Space: O(n)// since we are using a set to store all the values and in the worst case all elements will be stored inside it.

Using sets: 

Algorithm:

  • Create two empty sets, one to store unique characters and one to store duplicate characters.
  • Iterate through each character in the string.
  • If the current character is already in the unique_chars set, it is a duplicate, so add it to the duplicate_chars set. 
  • Otherwise, add it to the unique_chars set.
  • Return the duplicate_chars 
     

Python3

def find_duplicate_chars(string):

    unique_chars = set()

    duplicate_chars = set()

    for char in string:

        if char in unique_chars:

            duplicate_chars.add(char)

        else:

            unique_chars.add(char)

    return duplicate_chars

print(find_duplicate_chars("geeksforgeeks"))

Output

{'g', 's', 'e', 'k'}

Complexity Analysis:

The time complexity of this algorithm is O(n), where n is the length of the input string. 
The space complexity is also O(n), as the worst-case scenario is that all characters in the string are unique, and therefore all characters will be added to the char_set set.

Using functools.reduce method: 

Algorithm:

  • Initialize test string. 
  • Using reduce method on a string which iterates over each character of a string and performs a function on a string. 
  •  The function checks whether the character index from the left of the string and the right of the string is the same or not and whether it is already in the result or not.   
  • If any character satisfies the above condition then it is added to the result. 
  • Print the result. 

Python

from functools import reduce

def find_dup_char(input):

    x = reduce(lambda x, b: x + b if input.rindex(b) != input.index(b) and b not in x else x, input, '')

    print(x)

if __name__ == "__main__":

    input = 'geeksforgeeks'

    find_dup_char(input)

Time Complexity: O(N)  where N is the length of the string
Auxiliary Space: O(M)  M is the length of the new string.t 

Last Updated :
05 May, 2023

Like Article

Save Article

Пользователь вводит слово. Программа должна проверить, есть ли в строке одинаковые буквы и посчитать сколько раз они встречаются.

Использовать массивы, модули, листы и словари нельзя. Только цикл, только строки.

word = str(input('Введіть слово: '))
count = 0

while count <= len(word):
   for i in word:
       if i == word.[count]
print(count)

Пробовала что-то такое, но результат неверный, подсчитывает только кол-во символов.

0xdb's user avatar

0xdb

51.4k194 золотых знака56 серебряных знаков232 бронзовых знака

задан 8 окт 2020 в 19:02

anastasia's user avatar

5

Только цикл, только строки:

word = "гиппопотам"
seen = ""

for c in word:
    if c not in seen:
        print(f"{c}: {word.count(c)}")
        seen += c

вывод:

г: 1
и: 1
п: 3
о: 2
т: 1
а: 1
м: 1

ответ дан 8 окт 2020 в 19:18

MaxU - stand with Ukraine's user avatar

2

Если нельзя ни словарей ни массивов, ни сета, тогда я вижу такой вариант – для первой буквы в слове проверять есть ли у нее повторения, если есть, то вывести сколько их, затем удалить все вхождения этой буквы и продолжать до тех пор пока строка не будет пустой.

word = "гиппопотам"

while word:
    if word.count(word[0])>1: # если вывод количества нужен для всех, а не только для повторяющихся, то этот if можно убрать
        print(word[0], ':', word.count(word[0]))
    word = word.replace(word[0], '')

ответ дан 8 окт 2020 в 19:22

Andrey Maslov's user avatar

Andrey MaslovAndrey Maslov

2,9601 золотой знак5 серебряных знаков11 бронзовых знаков

4

word = input('Введіть слово: ')

for i in range(len(word)):
    if word[i] not in word[:i]:
        print(word[i], word.count(word[i])) 

Вот второй вариант:

word = input('Введіть слово: ')
 
for i in range(len(word)):
    if i == word.find(word[i]):
        print(word[i], word.count(word[i])) 

ответ дан 8 окт 2020 в 19:27

Danis's user avatar

DanisDanis

19.1k5 золотых знаков20 серебряных знаков55 бронзовых знаков

1

  • python строки

Ответы

Аватар пользователя Ivan Mamtsev

Чтобы проверить есть ли в строке повторяющиесся символы можно, например, обойти строку, складывая встречающиеся символы в множество (set) и проверять, положили ли мы его раньше

text = 'Foobaar'
seen = set()
for ch in text:
    if ch in seen:
        print('Was seen before!')
        break
    else:
        seen.add(ch)
# Was seen before!



0



0

Добавьте ваш ответ

Рекомендуемые курсы

13 часов

Старт в любое время

12 часов

Старт в любое время

21 час

Старт в любое время

Похожие вопросы

На чтение 15 мин Просмотров 8.6к. Опубликовано 11.08.2021

Содержание

  1. Введение в тему
  2. Введение в регулярные выражения
  3. Что такое шаблон регулярного выражения и как его скомпилировать
  4. Как разделить текст
  5. Поиск совпадений с использованием findall search и match
  6. Что делает re findall
  7. re search против re match
  8. Как заменить один текст на другой используя регулярные выражения
  9. Группы регулярных выражений
  10. Что такое жадное соответствие в регулярных выражениях
  11. Наиболее распространенный синтаксис и шаблоны регулярных выражений
  12. Примеры регулярных выражений

Введение в тему

Regex, или регулярные выражения – язык для работы с текстом. Он позволяет производить поиск, замену и другие операции. Этот язык встроен во многие другие языки программирования и является де-факто стандартным инструментом для большинства проектов, связанных с обработкой больших текстов.

Введение в регулярные выражения

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

Сфера применения этой библиотеки – всё, что связано с операциями над текстом: проверка пользовательского ввода, поиск на странице или в файле, анализ текстовой информации и многое другое. Но, будьте осторожны, использование этого инструмента требует определённых усилий. Не даром есть такая старая шутка: «Если у вас есть проблема, и вы собираетесь её решать с помощью регулярных выражений, тогда у вас будет уже две проблемы.»

Для начала работы с регулярными выражениями, необходимо импортировать модуль re в Ваш модуль.

Что такое шаблон регулярного выражения и как его скомпилировать

Ядром Regex являются шаблоны – синтаксис, позволяющий описывать текст: какой он длины, из каких символов состоит, в каком регистре и так далее. На основе таких шаблоном производится поиск в тексте.

Простой пример. Шаблон, который описывает один любой символ: «.?». Здесь точка означает любой символ, а вопросительный знак говорит о количестве – строго одно повторение.

Вы можете передать шаблон регулярного выражения в переменную, если планируете использовать его несколько раз. Для этого используется метод compile.


import re

regex = re.compile('.?')

# Теперь этот шаблон можно использовать из переменной

print(regex.findall('qwerty'))
# Вывод:

['q', 'w', 'e', 'r', 't', 'y', '']

Как разделить текст

В модуле re существует два метода разбиения строки по шаблону:

re.split и метод split объекта regex (который мы получаем методом compile). Второй метод предпочтительнее если Вы собираетесь использовать один и тот же шаблон много раз. Разберём, как они работают на примере:


import re

regex = re.compile('.')
text = 'Beautiful is better than ugly. ' 
'Explicit is better than implicit. ' 
'Simple is better than complex. ' 
'Complex is better than complicated. ' 
'Flat is better than nested.'
print('regex.split:', regex.split(text))
print('re.split:', re.split('.', text))
# Вывод:

regex.split: ['Beautiful is better than ugly', ' Explicit is better than implicit', ' Simple is better than complex', ' Complex is better than complicated', ' Flat is better than nested', '']

re.split: ['Beautiful is better than ugly', ' Explicit is better than implicit', ' Simple is better than complex', ' Complex is better than complicated', ' Flat is better than nested', '']

Как видите, работают он одинаково. Здесь мы экранировали точку обратной косой чертой чтобы модуль re воспринял её именно как точку, а не как любой символ.

Поиск совпадений с использованием findall search и match

Дальше мы рассмотрим, как искать участки текста, совпадающие с шаблоном регулярного выражения.

Что делает re findall


import re

regex = re.compile('is ......')
text = 'Beautiful is better than ugly. ' 
'Explicit is better than implicit. ' 
'Simple is better than complex. ' 
'Complex is better than complicated. ' 
'Flat is better than nested.'
print('regex.findall:', regex.findall(text))
# Вывод:

regex.findall: ['is better', 'is better', 'is better', 'is better', 'is better']

Метод findall ищет все участки текста, совпадающие с переданным шаблоном, и возвращает список, состоящий из найденных вхождений. В данном примере мы искали все участки, которые начинаются со слова ‘is’, пробела и шести любых символов после.

re search против re match

Метод match ищет по заданному шаблону в начале строки. Возвращает этот метод специальный объект, содержащий начальный и конечный индексы найденной подстроки:


import re

regex = re.compile('Beautiful')
text = 'Beautiful is better than ugly. ' 
'Explicit is better than implicit. ' 
'Simple is better than complex. ' 
'Complex is better than complicated. ' 
'Flat is better than nested.'
print('regex.match:', regex.match(text))
print('regex.match.start():', regex.match(text).start())
print('regex.match.end():', regex.match(text).end())
# Вывод:

regex.match: <re.Match object; span=(0, 9), match='Beautiful'>

regex.match.start(): 0

regex.match.end(): 9

Для того, чтобы вывести саму подстроку, придётся применить метод group:


import re

regex = re.compile('Beautiful')
text = 'Beautiful is better than ugly. ' 
'Explicit is better than implicit. ' 
'Simple is better than complex. ' 
'Complex is better than complicated. ' 
'Flat is better than nested.'
print('regex.match:', regex.match(text).group())
# Вывод:

regex.match: Beautiful

Метод search подобен функции match, но искать подстроки может в любом месте текста. Возвращает такой же объект, как и match.


import re

regex = re.compile('is .{6}')
text = 'Beautiful is better than ugly. ' 
'Explicit is better than implicit. ' 
'Simple is better than complex. ' 
'Complex is better than complicated. ' 
'Flat is better than nested.'
print('regex.search :', regex.search(text).group())
# Вывод:

regex.search : is better

Таким образом, отличие функций findall, search и match в способе поиска и возвращаемых значениях.

Как заменить один текст на другой используя регулярные выражения

Для замены одного фрагмента текста на другой используйте метод sub.
Тут, опять же существует два варианта:


import re

regex = re.compile('better')
text = 'Beautiful is better than ugly. ' 
'Explicit is better than implicit. ' 
'Simple is better than complex. ' 
'Complex is better than complicated. ' 
'Flat is better than nested.'# Первый вариант:
text = regex.sub('лучше', text)
print('regex.sub :', text)# Второй вариант:
text = re.sub('than', 'чем', text)
print('re.sub :', text)
# Вывод:

regex.sub : Beautiful is лучше than ugly. Explicit is лучше than implicit. Simple is лучше than complex. Complex is лучше than complicated. Flat is лучше than nested.

re.sub : Beautiful is лучше чем ugly. Explicit is лучше чем implicit. Simple is лучше чем complex. Complex is лучше чем complicated. Flat is лучше чем nested.

Группы регулярных выражений

Группы регулярных выражений — функция, позволяющая извлекать нужные объекты соответствия как отдельные элементы.

Если в шаблоне регулярного выражения встречаются скобки (…), то они становятся группирующими. Достаточно часто это бывает полезно.


import re

# Без группировки:
regex = re.compile(r'w{4,9}sis')
text = 'Beautiful is better than ugly. ' 
'Explicit is better than implicit. ' 
'Simple is better than complex. ' 
'Complex is better than complicated. ' 
'Flat is better than nested.'
print('regex.findall_1:', regex.findall(text))
# С группировкой:
regex = re.compile(r'(w{4,9})sis')
print('regex.findall_2:', regex.findall(text))
# Вывод:

regex.findall_1: ['Beautiful is', 'Explicit is', 'Simple is', 'Complex is', 'Flat is']

regex.findall_2: ['Beautiful', 'Explicit', 'Simple', 'Complex', 'Flat']

Что такое жадное соответствие в регулярных выражениях

Регулярные выражения могут быть жадными или ленивым. Если они жадные (это поведение по умолчанию), то они будут стараться найти как можно больший фрагмент текста, соответствующий шаблону.

Проще всего это понять на примере:


import re

regex = re.compile(r'.*.')
text = 'Beautiful is better than ugly. ' 
'Explicit is better than implicit.'
print('regex.findall:', regex.findall(text))
# Вывод:

regex.findall: ['Beautiful is better than ugly. Explicit is better than implicit.']

Как вы можете видеть, Regex показала совпадение до последней точки, хотя точка встречалась и в конце первой строки. Это и есть жадный поиск. Для того, чтобы активировать ленивое поведение, надо добавить в конец шаблона вопросительный знак. При ленивом поиске re будет останавливаться на каждой встреченной точке:


import re

regex = re.compile(r'.*?.')
text = 'Beautiful is better than ugly. ' 
'Explicit is better than implicit.'
print('regex.findall:', regex.findall(text))
# Вывод:

regex.findall: ['Beautiful is better than ugly.', ' Explicit is better than implicit.']

Наиболее распространенный синтаксис и шаблоны регулярных выражений

Ниже приведен список наиболее часто используемых шаблонов.

  • Специальные символы,
    • ‘.’ — любой символ;
    • ‘^’ — началу строки;
    • ‘$’ — конец строки;
    • ‘*’ — 0 или более повторений;
    • ‘+’ — 1 или более повторений;
    • ‘?’ — 0 или 1 повторений;
    • ‘*?’, ‘+?’,’??’ — ограничение жадности;
    • ‘{m}’ — m повторений;
    • ‘{m,n}’ — как можно больше повторений в промежутке от m до n ;
    • ‘{m,n}?’ — как можно меньше повторений в промежутке от m до n;
    • ‘’ — экранирование специальных символов;
    • ‘[]’ — символьный класс;
    • ‘|’ — или;
    • ‘(…)’ — группа с захватом;
  • Расширения регулярных выражений,
    • ‘(?aiLmsux)’ — установка флагов регулярного выражения;
    • ‘(?aiLmsux-imsx:…)’ — установка и удаление флагов;
    • ‘(?:…)’ — группа без захвата;
    • ‘(?P<name>…)’ — именованная группа;
    • ‘(?P=name)’ — обратная ссылка на именованную группу;
    • ‘(?#…)’ — комментарий;
    • ‘(?=…)’ — опережающая позитивная проверка;
    • ‘(?!…)’ — опережающая негативная проверка;
    • ‘(?<=…)’ — позитивная ретроспективная проверка;
    • ‘(?<!…)’ — негативная ретроспективная проверка;
    • ‘(?(id/name)yes-pattern|no-pattern)’ — стараться соответствовать yes-pattern;
  • Специальные последовательности.
    • ‘number’ — соответствие группы с тем же номером;
    • ‘A’ — только начало строки;
    • ‘b’ — пустая строка (начало или конц слова);
    • ‘B’ — пустая строка (НЕ начало или конец слова);
    • ‘d’ — любая десятичная цифра;
    • ‘D’ — НЕ десятичная цифра;
    • ‘s’ — пробельный символ;
    • ‘S’ — НЕ пробельный символ;
    • ‘w’ — символы, которые могут быть частью слова;
    • ‘W’ — символы, которые НЕ могут быть частью слова;
    • ‘Z’ — только конец строки;

Примеры регулярных выражений

Любой символ кроме новой строки


import re

regex = re.compile(r'.')
text = 'Beautiful is better than ugly.'
print('regex.findall:', regex.findall(text))
# Вывод:

regex.findall: ['B', 'e', 'a', 'u', 't', 'i', 'f', 'u', 'l', ' ', 'i', 's', ' ', 'b', 'e', 't', 't', 'e', 'r', ' ', 't', 'h', 'a', 'n', ' ', 'u', 'g', 'l', 'y', '.']

Всё, кроме точек и пробелов


import re

regex = re.compile(r'[^s,^.]')
text = 'Beautiful is better than ugly.'
print('regex.findall:', regex.findall(text))
# Вывод:
regex.findall: ['B', 'e', 'a', 'u', 't', 'i', 'f', 'u', 'l', 'i', 's', 'b', 'e', 't', 't', 'e', 'r', 't', 'h', 'a', 'n', 'u', 'g', 'l', 'y']

Любая цифра


import re

regex = re.compile(r'd+')
text = 'Date: 2021-08-11'
print('regex.findall:', regex.findall(text))
# Вывод:

regex.findall: ['2021', '08', '11']

Все, кроме цифры


import re

regex = re.compile(r'D+')
text = 'Date: 2021-08-11'
print('regex.findall:', regex.findall(text))
# Вывод:

regex.findall: ['Date: ', '-', '-']

Любая буква или цифра


import re

regex = re.compile(r'w+')
text = 'Date: 2021-08-11'
print('regex.findall:', regex.findall(text))
# Вывод:

regex.findall: ['Date', '2021', '08', '11']

Все, кроме букв и цифр


import re

regex = re.compile(r'W+')
text = 'Date: 2021-08-11'
print('regex.findall:', regex.findall(text))
# Вывод:

regex.findall: [': ', '-', '-']

Только буквы


import re

regex = re.compile(r'[A-Za-z]+')
text = 'Date: 2021-08-11'
print('regex.findall:', regex.findall(text))
# Вывод:

regex.findall: ['Date']

Соответствие заданное количество раз


import re

regex = re.compile(r'w{4}')
# Четыре буквы подряд
text = 'Beautiful is better than ugly.'
print('regex.findall_1:', regex.findall(text))
# От пяти до семи
regex = re.compile(r'w{5,7}')
print('regex.findall_2:', regex.findall(text))
# Вывод:

regex.findall_1: ['Beau', 'tifu', 'bett', 'than', 'ugly']

regex.findall_2: ['Beautif', 'better']

1 и более вхождений


import re

regex = re.compile(r'w+t+w+')
# Слова с одной или более буквами t подряд
text = 'Beautiful is better than ugly.'
print('regex.findall:', regex.findall(text))
# Вывод:

regex.findall: ['Beautiful', 'better']

Любое количество вхождений (0 или более раз)


import re

regex = re.compile(r'u+t*w+')
# Слова с одной или более буквами t подряд
text = 'Beautiful is better than ugly.'
print('regex.findall:', regex.findall(text))
# Вывод:

regex.findall: ['utiful', 'ugly']

0 или 1 вхождение


import re

regex = re.compile(r'u+t?w+')
# Слова с одной или более буквами t подряд
text = 'Beautiful is better than ugly.'
print('regex.findall:', regex.findall(text))
# Вывод:

regex.findall: ['utiful', 'ugly']

Граница слова

Для определения границ слова, то есть такого места в тексте, где рядом расположен символ, из которого может состоять слово (w) и пробел (s), используют символ b.

Пример:


import re

# Первые две буквы каждого слова
regex = re.compile(r'bww')
text = 'Beautiful is better than ugly.'
print('regex.findall_1:', regex.findall(text))
# Последние две буквы каждого слова
regex = re.compile(r'wwb')
print('regex.findall_2:', regex.findall(text))
# Вывод:

regex.findall_1: ['Be', 'is', 'be', 'th', 'ug']

regex.findall_2: ['ul', 'is', 'er', 'an', 'ly']

YanchEz

0 / 0 / 0

Регистрация: 21.08.2022

Сообщений: 4

1

Строка: Найти все повторяющиеся символы и заменить их

21.08.2022, 13:58. Показов 3630. Ответов 8

Метки python, циклы for (Все метки)


Студворк — интернет-сервис помощи студентам

День добрый! Подскажите, пожалуйста, как найти ВСЕ ПОВТОРЯЮЩИЕСЯ символы в строке и заменить их на то, что я хочу? На данный момент программа находит только один такой символ (либо же только вставляет один в p), либо ищет количество этих повторяющихся символов через str.count(), что бесполезно, потому что нужны индексы, а она их не возвращает..

Python
1
2
3
4
5
6
7
8
9
for i in range(rand):
    print('Попыток: ', rand-i)
    inp = input('Введи букву, которая может быть в слове: ')
    if inp in l:
        index = l.find(inp)
        p[index] = inp
        print(p)
    else:
        print('Такой буквы в слове нет!')



0



Модератор

Эксперт функциональных языков программированияЭксперт Python

35330 / 19431 / 4065

Регистрация: 12.02.2012

Сообщений: 32,459

Записей в блоге: 13

21.08.2022, 14:30

2

Вот дана строка “Hello world”. Что должно получиться?



0



Mikail7D6

beginner

296 / 208 / 98

Регистрация: 02.08.2022

Сообщений: 336

21.08.2022, 15:22

3

YanchEz, Если вам надо отследить все одинаковые символы из некой строки и их удалить к примеру(или заменить), то как-то так:
строка – азбука, символ – а, вывод – збук

Python
1
2
3
4
s = input()
for i in range(s.count('а')):
    s = s.replace('а', '') 
print(s)



0



iSmokeJC

Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

15975 / 8988 / 2602

Регистрация: 21.10.2017

Сообщений: 20,683

21.08.2022, 16:25

4

Liakim2006, очень плохо.
1. replace и так меняе все, что находит. Т.о. цикл не имеет смысла.
2. для начала нужно, как минимум, определить – что именно “а” появляется в слове более одного раза

Добавлено через 2 минуты
Если развить эту мысль, то

Python
1
2
3
4
5
s = 'azbuka'
for i in set(s):
    if s.count(i) > 1:
        s = s.replace(i, '*')
print(s)  #  *zbuk*



0



0 / 0 / 0

Регистрация: 21.08.2022

Сообщений: 4

22.08.2022, 14:33

 [ТС]

5

Дело в том, что str.replace() скорее всего у меня не получится здесь использовать. Удобнее всего было бы применить list.index(), но проблема в том, что метод возвращает всего одно – первое вхождение, а последующие игнорирует. Мне кажется этот момент очень неудобно реализован в питоне, ну либо, что очень вероятно, мне просто не хватает думалки и опыта.



0



Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

15975 / 8988 / 2602

Регистрация: 21.10.2017

Сообщений: 20,683

22.08.2022, 14:35

6

Цитата
Сообщение от YanchEz
Посмотреть сообщение

str.replace() скорее всего у меня не получится здесь использовать

почему?



0



0 / 0 / 0

Регистрация: 21.08.2022

Сообщений: 4

22.08.2022, 14:42

 [ТС]

7

У меня есть 3 основные переменные – в первую входит случайное слово из списка, во вторую идут случайно выбранные буквы из этого слова, а в третью я кладу (всё слово) минус (случайно выбранные буквы), то есть они исчезают оттуда. Потом идёт input() желаемой буквы, которая может быть в этом слове, и далее идёт проверка на наличие этой буквы в изначальной переменной, где слово написано полностью. И тут пока сама сложность – если input(*символ*) там присутствует, то должна быть выведена (третья переменная)+(input(*символ*)), и всё работает, пока в слове эта буква одна. Если их >= 2, то возвращается это слово только с одной вставленной буквой, а нужно 2 или более.



0



iSmokeJC

Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

15975 / 8988 / 2602

Регистрация: 21.10.2017

Сообщений: 20,683

22.08.2022, 14:50

8

Какая-то лютая дичь

Python
1
2
3
4
5
6
7
8
9
10
11
var1 = 'thisissomeworld'
var2 = 'iso'
var3 = ''.join(i for i in var1 if i not in var2)
var4 = input('Letter: ')  #s for example
result = var3 + var4 * var1.count(var4)
 
print(var1)
print(var2)
print(var3)
print(var4)
print(result)

Название: изображение_2022-08-22_145021263.png
Просмотров: 95

Размер: 11.0 Кб



1



YanchEz

0 / 0 / 0

Регистрация: 21.08.2022

Сообщений: 4

26.08.2022, 20:05

 [ТС]

9

кого интересует ответ на тему – всё легко и просто:

Python
1
2
3
4
5
6
7
if inp in l:
        for k in range(0, len(l)-2):
            if inp == l[k]:
                p[k] = inp
                print(p)
        else:
            continue



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

26.08.2022, 20:05

9

Добавить комментарий