Letter in word питон

How do I check if a letter is in a word? I want to check if A is in ABC? How do I do that?

My code so far:

pyg = 'ay'

original = raw_input('Enter a word:')

if len(original) > 0 and original.isalpha():
    word = original.lower() 
    first = word[0]
    if 'a, e, i, o, u' in original: # ?
     print vowel
      else: 
      print consonant 
else:
    print 'empty'

Martijn Pieters's user avatar

asked Nov 11, 2013 at 14:05

user2918250's user avatar

2

One way to check whether the word contains any vowels is:

if any(vowel in original for vowel in 'aeiou'):

Another way is:

if set('aeiou').intersection(original):

(You might want to factor the set('aeiou') out of the if.)

If you just want to check whether the given letter is a vowel, you could use:

if letter in 'aeiou':

answered Nov 11, 2013 at 14:08

NPE's user avatar

NPENPE

482k106 gold badges942 silver badges1006 bronze badges

3

I don’t know what the code you posted has anything to do with what you asked, but to answer your question:

How do I check if a letter is in a word? I want to check if A is in ABC? How do I do that?

It’s this simple:

>>> 'A' in 'ABC'
True

answered Nov 11, 2013 at 14:09

Inbar Rose's user avatar

Inbar RoseInbar Rose

41.2k24 gold badges83 silver badges129 bronze badges

0 / 0 / 0

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

Сообщений: 9

1

Вывести список слов, в которых присутствует введённая буква

18.11.2017, 23:29. Показов 21407. Ответов 3


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

Формат ввода
На первой строке вводится один символ — строчная буква.
На второй строке вводится предложение.

Формат вывода
Нужно вывести список слов (словом считается часть предложения, окружённая символами пустого пространства), в которых присутствует введённая буква в любом регистре, в том же порядке, в каком они встречаются в предложении.

Например-
Ввод
а
Ехал Грека через реку какая большая река.

Вывод
Ехал
Грека
какая
большая
река.



0



Programming

Эксперт

94731 / 64177 / 26122

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

Сообщений: 116,782

18.11.2017, 23:29

Ответы с готовыми решениями:

Дан текст, состоящий не менее чем из пяти слов. Сформировать стек из тех слов, в которых присутствует буква «Е»
Дан текст, состоящий не менее чем из пяти слов. Сформировать стек из тех слов, в которых…

Дан текст, состоящий не менее чем из пяти слов. Сформировать стек из тех слов, в которых присутствует буква «Е»
Дан текст, состоящий не менее чем из пяти слов. Сформировать стек из тех слов, в которых…

Вывести на экран слова, в которых введенная буква встречается не более 1 раза
С++
Есть файл со словами
С клавиатуры вводится буква
Вывести на экран самое длинное слово, в…

Дана строка, вывести на экран позиции, на которых встречается буква, введенная с клавиатуры
3. Дана строка, вывести на экран позиции, на которых встречается буква, введенная с клавиатуры.

3

Эксперт по компьютерным сетям

5880 / 3340 / 1031

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

Сообщений: 9,965

19.11.2017, 04:11

2

Лучший ответ Сообщение было отмечено Павел112233 как решение

Решение

заберите (input) одну строку в переменную
заберите вторую

вторую строку разбейте на слова (split), получится список

циклом for пройдитесь по списку и проверяйте есть ли буква в очередном слове (letter in word)
если так, выводите (print) слово



1



0 / 0 / 0

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

Сообщений: 9

19.11.2017, 12:33

 [ТС]

3

А как сделать если вводится маленькая буква.то выводить слова и с маленькой и большой. И если вводится заглавная,то выводить и с заглавной и с маленькой?



0



Semen-Semenich

4179 / 3095 / 1100

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

Сообщений: 7,754

19.11.2017, 15:57

4

Лучший ответ Сообщение было отмечено Павел112233 как решение

Решение

Python
1
2
3
4
5
letter = 'а'
text = 'Ехал Грека через реку какая большая река.'
for word in text.split():
    if letter in word.lower():
        print(word)



1



IT_Exp

Эксперт

87844 / 49110 / 22898

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

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

19.11.2017, 15:57

4

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Given a string, write a Python program to find whether a string contains only letters and no other keywords. Let’s discuss a few methods to complete the task.

    Method #1: Using isalpha() method 

    Python3

    ini_str = "ababababa"

    print ("Initial String", ini_str)

    if ini_str.isalpha():

        print("String contains only letters")

    else:

        print("String doesn't contains only letters")

    Output

    Initial String ababababa
    String contains only letters

    Time complexity: O(n), where n is length of ini_str.
    Auxiliary Space: O(1)

      
    Method #2: Using re 

    Python3

    import re

    ini_str = "ababababa"

    print ("Initial String", ini_str)

    pattern = re.compile("^[a-zA-Z]+$")

    if pattern.match(ini_str):

        print ("Contains only letters")

    else:

        print ("Doesn't contains only letters")

    Output

    Initial String ababababa
    Contains only letters

    Time Complexity: O(n)
    Auxiliary Space: O(n)

    Method #3 : Without any builtin methods

    Python3

    ini_str = "ababababa"

    lowerletters="abcdefghijklmnopqrstuvwxyz"

    upperletters="ABCDEFGIJKLMNOPQRSTUVWXYZ"

    a=lowerletters+upperletters

    print ("Initial String", ini_str)

    c=0

    for i in ini_str:

        if i in a:

            c+=1

    if(c==len(ini_str)):

        print("String contains only letters")

    else:

        print("String doesn't contains only letters")

    Output

    Initial String ababababa
    String contains only letters

    Method #4: Using operator.countOf() method

    Python3

    import operator as op

    ini_str = "ababababa"

    lowerletters = "abcdefghijklmnopqrstuvwxyz"

    upperletters = "ABCDEFGIJKLMNOPQRSTUVWXYZ"

    a = lowerletters+upperletters

    print("Initial String", ini_str)

    c = 0

    for i in ini_str:

        if op.countOf(a, i):

            c += 1

    if(c == len(ini_str)):

        print("String contains only letters")

    else:

        print("String doesn't contains only letters")

    Output

    Initial String ababababa
    String contains only letters

    Time Complexity: O(N)

    Auxiliary Space : O(1)

    Method#5: Using Ord() method. 

    Approach: For each character, we use the ord() method to get the ASCII value of the character. Then we check if the ASCII value is within the range of ASCII values for uppercase and lowercase letters (65-90 and 97-122 respectively). If the ASCII value is not within these ranges, it means that the character is not a letter, and the code prints “String doesn’t contains only letters” and breaks out of the loop. If the loop completes without breaking, it means all the characters in the string are letters, and the code prints “String contains only letters”.

    Python3

    ini_str = "ababababa"

    print ("Initial String", ini_str)

    for char in ini_str:

        ascii_val = ord(char)

        if not (ascii_val >= 65 and ascii_val <= 90) and not (ascii_val >= 97 and ascii_val <= 122):

            print("String doesn't contains only letters")

            break

    else:

        print("String contains only letters")

    Output

    Initial String ababababa
    String contains only letters

    Time Complexity: O(N)

    Auxiliary Space : O(1)

    Like Article

    Save Article

    Задача состояла в том, чтобы написать функцию с именем count_letter, которая берет список слов и определенную букву и возвращает количество слов, в которых эта буква встречается хотя бы один раз. И мы должны использовать цикл for. Итак, я составил список некоторых языков программирования и букву «а» и попытался применить все, что мы узнали до сих пор, а также несколько руководств в Интернете, чтобы понять, как перевести человеческую логику в строки кода, но, очевидно, я что-то упускаю, потому что это не так. не работает :( Вот как мой код выглядит на данный момент:

    mylist = ['fortran', 'basic', 'java', 'python', 'c++']
    letter = 'a'
    a_list = []
    def count_letter(mylist):
      count = 0
      for i in range(len(mylist)):
        if letter in i:
          count += 1
          a_list.append(i)
      return a_list
      print(len(a_list))
    

    Результат — нет результата. Компилятор онлайн-python возвращает ответ ** Процесс завершен — код возврата: 0 ** Мой вопрос: что я мог пропустить или неправильно расположить, что цикл не работает. Я хочу понять это для себя. В учебниках я нашел одну конструкцию, которая возвращает правильный ответ (и выглядит очень элегантно и компактно), но у нее нет никакой функции, поэтому это не совсем то, что нам нужно было написать:

    mylist = ['fortran', 'basic', 'java', 'python', 'c++']
    letter = 'a'
    res = len ([ele for ele in mylist if letter in ele])
    print ('Amount of words containing a: ' +str(res))
    

    Здесь ответ системы: 3 , как и ожидалось.

    Скажите, пожалуйста, что я должен проверить в коде № 1.

    4 ответа

    Несколько ошибок, которые я нашел в вашем коде:

    1. Когда вы выполняете for i in range(len(mylist)), вы фактически перебираете числа 1,2,… вместо элементов mylist. Таким образом, вы должны использовать «for i in mylist» для перебора элементов массива mylist.

    2. Когда вы возвращаетесь из функции, код после возврата не выполняется. Поэтому вы должны сначала напечатать его, а затем вернуться из функции.

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

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

    mylist = ['fortran', 'basic', 'java', 'python', 'c++']
    letter = 'a'
    a_list = []
    def count_letter(mylist):
      for i in mylist:
        if letter in i:
          a_list.append(i)
      print(len(a_list))
      return a_list
      
    print(count_letter(mylist))
    

    Всего наилучшего в вашем путешествии!


    1

    Muhammed Jaseem
    8 Май 2021 в 23:39

    Лично я нахожу исходный код Python более легким для чтения, когда он разделен на четыре пробела. Итак, вот ваша функция снова с более широким отступом:

    def count_letter(mylist):
        count = 0
        for i in range(len(mylist)):
            if letter in i:
                count += 1
                a_list.append(i)
        return a_list
        print(len(a_list))
    

    for i in range(...) будет перебирать набор целых чисел. Таким образом, i будет принимать новое целочисленное значение для каждой итерации цикла. Сначала i будет 0, затем 1 на следующей итерации и так далее.

    Затем вы спрашиваете if letter in i:. Это никогда не может быть правдой. letter — это строка, а i — целое число. Строка никогда не может быть «внутри» целого числа, поэтому этот оператор if никогда не будет выполняться. Скорее, вы хотите проверить, находится ли letter в текущем слове (i-е слово в списке). Оператор if должен читать:

    if letter in mylist[i]:
        ...
    

    Где mylist[i] — текущее слово.

    Затем вы увеличиваете count и добавляете i к a_list. Вероятно, вы хотели добавить mylist[i] к a_list, но я не понимаю, зачем вам вообще нужно a_list. Вам просто нужно count, так как это отслеживает, сколько слов вы встретили до сих пор, для которых условие истинно. count также является переменной, которую вы должны вернуть в конце, так как это цель функции: вернуть количество слов (а не самих слов), которые содержат определенную букву.

    Кроме того, отступ последнего оператора print делает его частью тела функции. Однако это после return, что означает, что у него никогда не будет возможности напечатать. Когда вы используете return внутри функции, она завершает функцию, и поток выполнения возвращается к тому месту, из которого функция была первоначально вызвана.

    Последнее изменение, которое необходимо применить, заключается в том, что ваша функция должна принимать букву для поиска в качестве параметра. Сейчас ваша функция принимает только один параметр — список слов, по которым нужно искать.

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

    def count_letter(words, letter): # I find 'words' is a better name than 'mylist'.
        count = 0
        for i in range(len(words)):
            current_word = words[i]
            if letter in current_word:
                count += 1
        return count
    

    Вот как вы можете использовать эту функцию:

    words = ["hello", "world", "apple", "sauce"]
    letter = "e"
    count = count_letter(words, letter)
    print("The letter '{}' appeared in {} words.".format(letter, count))
    

    Выход:

    The letter 'e' appeared in 3 words.
    


    1

    Paul M.
    8 Май 2021 в 23:49

    Я думаю, что «принимает» означает, что функция должна быть определена с двумя параметрами: words_list и letter:

    def count_letter(words_list, letter):
    

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

    В Python это может быть выражено как:

    def count_letter(words_list, letter):
        return sum(letter in word for word in words_list)
    

    Некоторое объяснение: letter in word возвращает логическое значение (True или False), а в Python логические значения являются подклассом целого числа (True равно 1, а False равно 0). Если буква есть в слове, результат будет 1, а если нет, то 0. Подведение итогов дает количество слов, в которых присутствует буква.


    1

    Aivar Paalberg
    8 Май 2021 в 23:53

    Я прочитал все ваши ответы, некоторые важные моменты я записал, сегодня снова сидел со своим кодом, и после еще нескольких попыток он сработал… Итак, окончательный вариант выглядит так:

    words = ['fortran', 'basic', 'java', 'python', 'c++']
    letter = "a"
    
    
    def count_letter(words, letter):
        count = 0
        for word in words:
            if letter in word:
                count += 1
        return count
    print(count_letter((words),letter))
    

    Ответ системы: 3

    Что для меня пока не очевидно: правильные отступы (они тоже были частью проблемы), и дополнительная пара скобок вокруг words в строке print. Но это приходит с обучением.

    Спасибо еще раз!

    Я пытаюсь подсчитать количество раз «e» появляется в слове.

    def has_no_e(word):     #counts 'e in a word
    letters = len(word)
    count = 0
    while letters >= 0:
    if word[letters-1] == 'e':
    count = count + 1
    letters = letters - 1
    print count

    Кажется, что он работает отлично, за исключением того, что слово заканчивается на «e». Он будет считать это «е» дважды. Понятия не имею почему. Любая помощь?

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

    Как уже упоминалось, вы можете реализовать тест с помощью простого word.count('e'). Если вы не делаете это как простое упражнение, это намного лучше, чем пытаться изобрести колесо.

    Проблема с вашим кодом заключается в том, что он считает последний символ дважды, потому что вы тестируете индекс -1 в конце, который в Python возвращает последний символ в строке. Исправьте его, изменив while letters >= 0 на while letters > 0.

    Есть другие способы, которыми вы можете убрать свой код (если это упражнение в обучении):

      Python обеспечивает отличный способ итерации по строке с использованием цикла for. Это гораздо более кратким и понятным для чтения, чем использование цикла while и сохранение собственной переменной счетчика. Как вы уже видели здесь, добавление сложности приводит к ошибкам. Держите это просто.
      Большинство языков предоставляют оператор +=, который для целых чисел добавляет сумму к переменной. Это более кратким, чем count = count + 1.
      Используйте параметр, чтобы определить, какой символ вы рассчитываете, чтобы сделать его более гибким. Определите аргумент по умолчанию для использования char='e' в списке параметров, когда у вас есть очевидное значение по умолчанию.
      Выберите более подходящее имя для функции. Имя has_no_e() заставляет читателя думать, что код проверяет, не содержит ли код e, но то, что он на самом деле делает, подсчитывает вхождения e.

    Положив все это вместе, получим:

    def count_letter(word, char='e'):
    count = 0
    for c in word:
    if c == char:
    count += 1
    return count

    Некоторые тесты:

    >>> count_letter('tee')
    2
    >>> count_letter('tee', 't')
    1
    >>> count_letter('tee', 'f')
    0
    >>> count_letter('wh' + 'e'*100)
    100

    >>> word = 'eeeooooohoooooeee'
    >>> word.count('e')
    6

    Почему не это?

    Если вам действительно нужно «has_no_e», то следующее может быть более подходящим, чем подсчет «e», а затем проверка нуля,

    def has_no_e(word):
    return 'e' not in word

    >>> has_no_e('Adrian')
    True
    >>> has_no_e('test')
    False
    >>> has_no_e('NYSE')
    True

    Если вы хотите проверить, нет ли «E»,

    def has_no_e(word):
    return 'e' not in word.lower()

    >>> has_no_e('NYSE')
    False

    @marcog делает несколько отличных точек;

    тем временем вы можете выполнить простую отладку, вставив операторы печати —

    def has_no_e(word):
    letters = len(word)
    count = 0
    while letters >= 0:
    ch = word[letters-1] # what is it looking at?
    if ch == 'e':
    count = count + 1
    print('{0} <-'.format(ch))
    else:
    print('{0}'.format(ch))
    letters = letters - 1
    print count

    затем

    has_no_e('tease')

    возвращает

    e <-
    s
    a
    e <-
    t
    e <-
    3

    из которого вы можете видеть, что

      вы проходите строку в обратном порядке
      он правильно распознает e
      вы «обертываете» до конца строки — следовательно, дополнительный e, если ваша строка заканчивается на одном

    Многие из предложенных решений будут работать нормально.

    Знайте, что в Python список [-1] вернет последний элемент списка.

    Итак, в вашем исходном коде, когда вы ссылались на слово [буквы-1] в цикле while, ограниченном буквами >= 0, вы считали бы «e» в конце слова дважды (один раз, когда буквы были длина-1 и второй раз, когда буквы были 0).

    Например, если бы мое слово было «Пит», ваша дорожка кода выглядела бы так (если вы напечатали слово [письмо] каждый цикл.

    e (для слова [3])
    t (для слова [2])
    e (для слова [1])
    P (для слова [0])
    e (для слова [-1])

    Надеюсь, что это поможет прояснить ситуацию и выявить интересную небольшую причуду о Python.

    Он будет считать это дважды, когда заканчивается на e, потому что вы уменьшаете letters один раз слишком много (потому что вы зацикливаете while letters >= 0, и вы должны зацикливаться, пока letters > 0). Когда letters достигает нуля, вы проверяете word[letters-1] == word[-1], который соответствует последнему символу в слове.

    Проблема в том, что последнее значение «букв» в вашей итерации равно «0», и когда это происходит, вы смотрите:

      word[letters-1]

    означает, что вы смотрите на слово [-1], которое в python означает «последняя буква слова».

    так что вы на самом деле правильно подсчитываете и добавляете «бонус», если последняя буква «e».

    Вам не нужно использовать цикл while. Строки могут использоваться для циклов в Python.

    def has_no_e(word):
    count = 0
    for letter in word:
    if letter == "e":
    count += 1
    print count

    или что-то более простое:

    def has_no_e(word):
    return sum(1 for letter in word if letter=="e")

    Почему бы просто не

    def has_no_e(word):
    return sum(1 for letter in word if letter=="e")

    Введите минимум 50 символов

    Понравилась статья? Поделить с друзьями:
  • Letter in word для проверки наличия буквы в слове
  • Let the word spread
  • Letter height in word
  • Let the word get out
  • Letter heads in word