Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 19, 2012 17:06:42

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

Без согласных

Доброго времени суток!
Друзья, как выполнить такую задачу?

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

Могу написать для одного слова/предложения, а вот для цикла нет

И еще такая штука: нужно чтобы все распечатывалось как реальное предложние, то есть вариант

for i in new_word:
print i,
не прокатит. Там есть пробелы между символами

Вот код для одного слова или предложения
word = raw_input (u'Введите слово ').decode('cp1251')
new_word = ''
CONSTANTS = u'цкнгшщзхфвпрлдчсмтб'

for letter in word:
if letter.lower() not in CONSTANTS:
new_word += letter

print new_word

Нужно получить такой же результат, только для нескольких слов/предложений. Каждое - на отдельной строке

Отредактировано BG (Ноя. 19, 2012 17:07:33)

Офлайн

#2 Ноя. 19, 2012 18:57:39

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Без согласных

Вложенные циклы?

Офлайн

#3 Ноя. 19, 2012 19:25:16

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Без согласных

Этот код, что вы привели, вложите в тело цикла while True:. После ввода слова проверяйте содержимое строки, если оно удовлетворяет условию прекращения цикла (скажем, пустая строка будет if not word), то break.

Офлайн

#4 Ноя. 19, 2012 20:34:40

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

Без согласных

А если пользователь введет число???
Предварительно необходимо отследить, что ввел пользователь…
Рекомендую исопльзовать

if word.isalpha() != False: # В word только слова



Офлайн

#5 Ноя. 19, 2012 21:00:57

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Без согласных

4kpt
вылезьте из криокамеры наконец

if word.isalpha():

Офлайн

#6 Ноя. 19, 2012 21:33:52

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

Без согласных

sergeek
Привычка явно указывать значение…
Я знал, что так можно….
sergeek
С тем учетом, что Вы рекомендуете втуливать global…
Вылезаем вместе…:)



Отредактировано 4kpt (Ноя. 19, 2012 23:19:13)

Офлайн

#7 Ноя. 20, 2012 00:17:06

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

Без согласных

4kpt
По умолчанию пользователь вводить должен слово, так что это не обязательно

dimy44
Если я вас правильно понял, то выходит следующая штука:

new_word = ''
word = raw_input (u'Введите слово ').decode('cp1251')
CONSTANTS = u'цкнгшщзхъфвпрлдчсмтьб'

while True:
word = raw_input (u'Введите слово ').decode('cp1251')
if not word:
break
for letter in word:
if letter.lower() not in CONSTANTS:
new_word += letter

print new_word
Но тут две проблемы:
1) Первое вводимое слово не фильтруется
2) Весь результат идет сплошной строкой

Отредактировано BG (Ноя. 20, 2012 00:17:38)

Офлайн

#8 Ноя. 20, 2012 05:11:01

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Без согласных

CONSTANTS = u'бвгджзйклмнпрстфхцчшщъь'
result=[]
while True:
    word = raw_input (u'Введите слово ').decode('utf-8')
    if not word:
        break
    tmp=''
    for letter in word:
        if letter.lower() not in CONSTANTS:
            tmp+=letter
    result.append(tmp)
print result



Офлайн

#9 Ноя. 20, 2012 05:41:02

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Без согласных

CONSTANTS = u'бвгджзйклмнпрстфхцчшщъь'
word = raw_input (u'Введите слово ')
while word:
    print(u"".join(_ for _ in word.decode("utf-8") if _ not in CONSTANTS))
    word = raw_input (u'Введите слово ')



Офлайн

#10 Ноя. 20, 2012 14:09:13

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

Без согласных

FishHook, пишет UnicodeDecodeError: ‘utf8’ codec can't decode byte 0xe4 in position 0: invalid continuation byte
меняю на кодировку cp1251 и вылезает syntax error, подсвечивая not
Что может быть?

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version