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

Вывести индексы букв слова

14.11.2018, 16:18. Показов 15641. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На входе две строки, нужно вывести индексы букв первого слова, которые есть во втором.
f None
a 1 4 6 8 11
b 2 9
r 3 10
i None
c 5

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
s1 = str('Abracadabra')
s1 = s1.lower()
s2 = str('Fabric')
s2 = s2.lower()
s1 = list(s1)
s2 = list(s2)
N = len(s1) + 1
a = []
b = []
 
for i in range(len(s2)):
    b.append(s2[i])
    for j in range(len(s1)):
        if s2[i] not in s1:
            a.append("None")
            break
        if s2[i] == s1[j]:
            a.append(j)
    print(b, a, )
У меня происходит накопление, как от этого избавится? Не ругайте, я только учусь )
мой вывод:
['f'] ['None']
['f', 'a'] ['None', 0, 3, 5, 7, 10]
['f', 'a', 'b'] ['None', 0, 3, 5, 7, 10, 1, 8]
['f', 'a', 'b', 'r'] ['None', 0, 3, 5, 7, 10, 1, 8, 2, 9]
['f', 'a', 'b', 'r', 'i'] ['None', 0, 3, 5, 7, 10, 1, 8, 2, 9, 'None']
['f', 'a', 'b', 'r', 'i', 'c'] ['None', 0, 3, 5, 7, 10, 1, 8, 2, 9, 'None', 4]
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.11.2018, 16:18
Ответы с готовыми решениями:

Вывести все слова строки, содержащие нечетное количество букв относительно центра слова
Задание: дана строка символов, состоящая из отдельных слов, отделенных пробелом. Вывести все слова строки, содержащие нечетное количество...

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

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

11
151 / 86 / 35
Регистрация: 05.08.2017
Сообщений: 257
14.11.2018, 17:01
Цитата Сообщение от Julia_55 Посмотреть сообщение
s1 = str('Abracadabra')
'Abracadabra' и так строка, приведение не нужно
Цитата Сообщение от Julia_55 Посмотреть сообщение
s1 = list(s1)
Строка и так является списком символов
Как я понял что то вроде этого надо? И когда оформляешь тему код надо заключать в тег python

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
s1 = "Abracadabra".lower()
s2 = "Fabric".lower()
 
indexes = []
symbols = []
 
for i in s1:
    if i in s2 and i not in symbols:
        print(i)
        indexes.append(s1.index(i))
        symbols.append(i)
 
print(indexes, symbols, sep="\n")
1
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
14.11.2018, 19:08
Цитата Сообщение от Resistanse Посмотреть сообщение
Строка и так является списком символов
не путайте народ. строка это строка а список-это список!
Python
1
2
3
4
5
6
7
>>> s1 = 'Abracadabra'
>>> print(type(s1))
<class 'str'>
>>> s1 = list(s1)
>>> print(type(s1))
<class 'list'>
>>>
Python
1
2
3
4
5
s1 = 'Abracadabra'.lower()
s2 = 'Fabric'.lower()
for index, letter in s1:
    if letter in s2:
        print(index)
1
151 / 86 / 35
Регистрация: 05.08.2017
Сообщений: 257
14.11.2018, 19:12
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
не путайте народ. строка это строка а список-это список!
Ну так то да, но смысла в строке
Цитата Сообщение от Julia_55 Посмотреть сообщение
s1 = list(s1)
Нету
1
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
14.11.2018, 20:29
Python
1
2
3
4
5
>>> s1 = 'Abracadabra'.lower()
>>> s2 = 'Fabric'.lower()
>>> [i for i in range(len(s1)) if s1[i] in s2]
[0, 1, 2, 3, 4, 5, 7, 8, 9, 10]
>>>
1
0 / 0 / 0
Регистрация: 14.11.2018
Сообщений: 6
15.11.2018, 11:28  [ТС]
Для каждой буквы из второй строки необходимо определить на каких позициях встречается эта буква в первой строке и вывести их на печать в формате: <буква> <номера позиций через пробел>. Если буква не имеет вхождений, необходимо напечатать None вместо номеров позиций.
Я сделала пока так, дальше не придумала пока
Python
1
2
3
4
5
6
7
8
9
s1 = list(str('Abracadabra').lower())
s2 = list(str('Fabric').lower())
result = []
for i in range(len(s1)):
    s1[i] = [s1[i], i + 1]
for j in range(len(s2)):
    s2[j] = s2[j], j + 1
 
print(*s2, sep='\n', end='')
То есть вывод должен быть таким:
f None
a 1 4 6 8 11
b 2 9
r 3 10
i None
c 5
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
15.11.2018, 11:55
не надо строку приводить к строке!
Python
1
str('Abracadabra').lower()
элементы строки тоже имеют индексы так что списки тут не нужны
Python
1
2
3
4
5
6
7
8
9
s1 = 'Abracadabra'.lower()
s2 = 'Fabric'.lower()
result = []
for letter_2 in s2:
    if letter_2 in s1:
        result = [i+1 for i, letter_1 in enumerate(s1) if letter_2 == letter_1]
        print(letter_2,*result)
    else:
        print(letter_2,'None')
2
0 / 0 / 0
Регистрация: 14.11.2018
Сообщений: 6
15.11.2018, 12:06  [ТС]
В принципе получилось, осталась одна загвоздка: как вывести не построчно, а столбцами?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
s1 = str('Abracadabra')
s1 = s1.lower()
s2 = str('Fabric')
s2 = s2.lower()
s1 = list(s1)
s2 = list(s2)
N = len(s1) + 1
a = []
b = []
 
for i in range(len(s2)):
    b.append(s2[i])
    for j in range(len(s1)):
        if s2[i] not in s1:
            a.append("None")
            break
        if s2[i] == s1[j]:
            a.append(j + 1)
for row in b, a:
    print(' '.join([str(elem) for elem in row]), sep='\n')
________________________________________ ________________
вывод:
Python
1
2
f a b r i c
None 1 4 6 8 11 2 9 3 10 None 5
________________________________________ ________________
а надо:
f None
a 1 4 6 8 11
b 2 9
r 3 10
i None
c 5
0
29 / 21 / 8
Регистрация: 23.10.2018
Сообщений: 51
Записей в блоге: 3
16.11.2018, 12:55
можно так
Python
1
2
3
4
5
6
7
8
9
10
s1 = 'Abracadabra'.lower()
s2 = 'Fabric'.lower()
for i in s2:
    c = i
    for j, k in enumerate(s1):
        if i == k:
            c = c+' '+str(j+1)
    if c == i:
        c = c+' None'
    print(c)
1
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
24.11.2018, 13:15
vlander,


Failed test #2. Wrong answer
Input:
abc
abA
Your output:
a 1
b 2
a 1
Correct output:
a 1
b 2
0
602 / 550 / 210
Регистрация: 24.01.2012
Сообщений: 1,352
25.11.2018, 19:58
Если для правильности решения порядок букв не важен, то можно преобразовать вторую строку в множество. Т.е., вместо s2 = 'Fabric'.lower() нужно s2 = set('Fabric'.lower()). Таким образом уберутся все дубли, но порядок букв будет непредсказуемым.
0
1 / 1 / 0
Регистрация: 20.11.2020
Сообщений: 2
20.11.2020, 18:07
если кому ещё интересно:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
x = input()
min = 100
min_w = ""
max = 0
max_w = ""
c = 0
while x != "стоп":
    if len(x) > max:
        max = len(x)
        max_w = x
    if len(x) < min:
        min = len(x)
        min_w = x
    x = input()
for i in min_w:
    if not(i in max_w):
        print("НЕТ")
        c = 1
        break
if c == 0:
    print("ДА")
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2020, 18:07
Помогаю со студенческими работами здесь

Вывести слова из строки у которых больших букв больше чем маленьких
Здравствуйте,есть следующее задание-нужно вывести слова из строки у которых больше больших букв нежели маленьких. я смог сделать только...

Вывести в алфавитном порядке все слова, содержащие наибольшее количество гласных букв
Вывести в алфавитном порядке все слова, содержащие наибольшее количество гласных букв; найти все слова, в которые буква «а» входит не менее...

Найти и вывести на экран слова, где есть сочетание букв «ѐнок» или «онок» (или латинская альтернатива)
Здравствуйте! Задание вроде простое, но не понимаю как его сделать... Есть список из нескольких предложений.Надо найти и вывести на экран...

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

Вывести на экран все слова в которых имеется максимальное количество различных букв
Дана последовательность символов состоящая из слов вывести на экран все слова в которых имеется максимальное количество различных букв....


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru