Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 17, 2013 00:44:54

Kato
Зарегистрирован: 2012-11-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

проверить на наличие буквы

всем доброй ночи!
прошу прощения за настолько наивный вопрос:
Как проверить, есть ли буква в введенном слове?..

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?
заранее спасибо!

Офлайн

#2 Сен. 17, 2013 00:52:37

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

проверить на наличие буквы

Вы хотите слова с указанными в bukva буквами положить в arr, а без указнных буква в marr?
Я Вас правильно понял?



Офлайн

#3 Сен. 17, 2013 01:19:09

Kato
Зарегистрирован: 2012-11-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

проверить на наличие буквы

да,именно так!

4kpt
Вы хотите слова с указанными в bukva буквами положить в arr, а без указнных буква в marr?Я Вас правильно понял?

Отредактировано Kato (Сен. 17, 2013 01:19:34)

Офлайн

#4 Сен. 17, 2013 02:18:52

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

проверить на наличие буквы

Тут есть масса вариантов на самом деле. Выбираю самые простые (для понимания).

Если количество букв в 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. Если я правильно понял, то это учебный пример, так как реально такие вещи решаются с помощью регулярных выражений.



Офлайн

#5 Сен. 17, 2013 03:50:05

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9730
Репутация: +  843  -
Профиль   Отправить e-mail  

проверить на наличие буквы

>>> 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']
>>>



Отредактировано py.user.next (Сен. 17, 2013 03:50:47)

Офлайн

#6 Сен. 18, 2013 19:13:25

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

проверить на наличие буквы

>>> 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

Отредактировано lorien (Сен. 18, 2013 19:13:51)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version