2016-03-08 4 views
2

Мне удалось выяснить проблему! благодарю вас за ваши комментарии и предложения, а также за COACHING :).Нарезка струны, Поиск символа

Это мой конечный результат, и он работает просто отлично: («!? Привет! Добро пожаловать Что такое первое и последнее имя»)

печати

имени = вход() печати ("Там являются», длина (имя), "письма на ваше имя.")

печати ("Какое письмо вы хотели бы найти в вашем имени?")

письмо = вход()

печать ("Какое письмо вы хотели бы найти в вашем имени?")

письмо = вход()

если letter.lower:

find_letter = name.find (письмо)

print(find_letter+1) 

если letter.upper:

find_letter = name.find(letter) 

print(find_letter+1) 

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

+0

Хочет найти первое вхождение буквы или все вхождения? – timgeb

+0

Он должен был найти все вхождения, но получил отличную помощь :) – Wbsauls255

+0

Хорошо, если вы хотите найти все вхождения, 'str.find' не очень хороший подход. Он найдет только первое вхождение и, используя его, чтобы найти все вхождения, последовательно разрезая жало, станет уродливым. – timgeb

ответ

0

Я не уверен, что вы имеете в виду, но как насчет этого?

print("Hello, and welcome! What is first and last name?") 
name = input() 
print("There are", len(name), "letters in your name.") 
print("What letter would you like to search for in your name?") 
letter = input() 
if letter: 
    find_letter = name.find(letter) 
    print(find_letter+1) 
+0

Сложно объяснить LOL, но я сделаю попытку! – Wbsauls255

+0

Отлично! Это то, к чему я пытался пойти ... я забыл о инструкции if ... Часть задания была следующей: во-первых, попросите пользователя ввести свое имя, первое и последнее. Затем попросите пользователя ввести письмо, которое они хотели бы найти от их имени. Укажите, сколько раз это письмо происходит от их имени, и распечатывайте счет. (Не забудьте подсчитать как строчные, так и прописные буквы буквы) – Wbsauls255

+0

Вопрос, почему это было просто «если письмо:»? не следует ли добавлять к этому больше, например < > или =? – Wbsauls255

1

str.find только даст вам индекс первого вхождения символа, например:

>>> s = 'hello' 
>>> s.find('l') 
2 

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

Демо:

>>> name = input('input a name: ') 
input a name: John Doe 
>>> find_me = input('input character to search for: ') 
input character to search for: o 
>>> [index for index, char in enumerate(name) if char == find_me] 
[1, 6] 

список Результат говорит о том, что характер 'o' может быть найден по индексу 1 и 6 имени. Если вы хотите смещение (например, начать подсчет индексов в одном, а не в нуле), указать его в качестве второго аргумента enumerate:

>>> [index for index, char in enumerate(name, 1) if char == find_me] 
[2, 7] 

Список результатов говорит вам, что письмо 'o' можно найти по адресу второй и седьмой символ имени (если вы начинаете считать с 1).

редактировать:

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

count Просто используйте метод струны для этого:

>>> name = input('input a name: ') 
input a name: John Doe Schmo 
>>> find_me = input('input character to search for: ') 
input character to search for: o 
>>> name.count(find_me) 
3 
Смежные вопросы