Найти - Пользователи
Полная версия: проверить на наличие буквы
Начало » Центр помощи » проверить на наличие буквы
1
Kato
всем доброй ночи!
прошу прощения за настолько наивный вопрос:
Как проверить, есть ли буква в введенном слове?..
slovo = '0'
arr = []
marr = []
bukva = [u'w']
while slovo != '':
slovo = raw_input(u'Введите слово: ').decode('cp1251')
for b in slovo:
if b in bukva:
arr.append(slovo)
else:
marr.append(slovo)

попадет ли мое слово без буквы “w” в массив marr?
заранее спасибо!
4kpt
Вы хотите слова с указанными в bukva буквами положить в arr, а без указнных буква в marr?
Я Вас правильно понял?
Kato
да,именно так!
4kpt
Вы хотите слова с указанными в bukva буквами положить в arr, а без указнных буква в marr?Я Вас правильно понял?
4kpt
Тут есть масса вариантов на самом деле. Выбираю самые простые (для понимания).

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

slovo = '0'
arr = []
marr = []
bukva = [u'w']
while True:
    slovo = raw_input(u'Введите слово: ').decode('cp1251')
    if not slovo: break
    list_append = marr
    for chr_ in slovo:
        if chr_ in bukva:
            list_append = arr
            break
    list_append.append(slovo)

Если же ситуация обратна (как в Вашем примере), то лучше проходить по списку и искать букву в слове

slovo = '0'
arr = []
marr = []
bukva = [u'w']
while True:
    slovo = raw_input(u'Введите слово: ').decode('cp1251')
    if not slovo: break
    list_append = marr
    for chr_ in bukva:
        if chr_ in slovo:
            list_append = arr
            break
    list_append.append(slovo)

P.S. Если я правильно понял, то это учебный пример, так как реально такие вещи решаются с помощью регулярных выражений.
py.user.next
>>> letters = set('abcd')
>>> 
>>> arr, narr = [], []
>>> for word in 'cccx', 'zzzzz', 'zzzaz', 'xxdxdxx', 'x':
...     if set(word) & letters:
...         arr.append(word)
...     else:
...         narr.append(word)
... 
>>> arr
['cccx', 'zzzaz', 'xxdxdxx']
>>> narr
['zzzzz', 'x']
>>>
lorien
>>> bukva = ['a', 'b']
>>> any(x in 'az' for x in bukva)
True
>>> any(x in 'yz' for x in bukva)
False
>>> any(x in 'bz' for x in bukva)
True
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB