Найти - Пользователи
Полная версия: Программа "Без гласных", ошибка с русскими словами.
Начало » Python для новичков » Программа "Без гласных", ошибка с русскими словами.
1 2
ilya19
Очень простая программа.
Должна получить предложение у пользователя, после чего вывести его же, но без гласных. Код такой у меня:

message= input('Введите слово или предложение ‘)
new_message=’'
GLASNYE='eyuioaйуеыаоэёяию'
for letter in message:
if letter.lower() not in GLASNYE:
new_message += letter
print ('Создана новая строка', new_message)
print ('Все, мы получили ваше предложение без гласных', new_message)

При вводе английских слов все работает корректно. Вместо punks not dead возвращает pnks nt dd.
При вводе русских слов сбоит:

Введите слово или предложение Илья
Создана новая строка л
Создана новая строка л
Все, мы получили ваше предложение без гласных л
>>>

Что не так? Как-то нужно настроить кодировки? Что почитать на эту тему, чтобы разобраться?

PS/ Пайтон только начал изучать, строго не судите.
Budulianin
ilya19
Что не так?

Код не в тегах.
J.R.
.
py.user.next
J.R.
Как минимум не верно условие:
not in - обычная идиома питона

>>> message = input('Введите слово или предложение: ')
Введите слово или предложение: Илья
>>> new_message = ''
>>> options = 'eyuioaйуеыаоэёяию'
>>> for item in message:
...     if item.lower() not in options:
...         new_message += item
... 
>>> print(new_message)
ль
>>>
J.R.
.
ilya19
Ось Mac Os X.
Кодировка такая в терминале:
$ locale
LANG=“ru_RU.UTF-8”
LC_COLLATE=“ru_RU.UTF-8”
LC_CTYPE=“ru_RU.UTF-8”
LC_MESSAGES=“ru_RU.UTF-8”
LC_MONETARY=“ru_RU.UTF-8”
LC_NUMERIC=“ru_RU.UTF-8”
LC_TIME=“ru_RU.UTF-8”
LC_ALL=

Но, как я понимаю, пайтон по умолчанию тоже использует UTF..

Не понимаю, что в коде надо прописать, чтобы корректно отображалось. Вероятно, дело все-таки в кодировках, раз с английскими словами программа работает корректно.
J.R.
.
neitro
1) в начале файла должно быть
# -*- coding: utf-8 -*-
2) GLASNYE = u'eyuioaйуеыаоэёяию'
ilya19
У меня питон 3.4.3, все делаю в IDLE.
Вот такой код получился, все равно не работает:
# -*- coding: utf-8 -*-
message=input('Введите слово или предложение ')
new_message=''
GLASNYE=u'eyuioaйуеыаоэёяию'
for letter in message:
       if not letter.lower() in GLASNYE:
              new_message += letter
              print ('Создана новая строка', new_message)
print ('Все, мы получили ваше предложение без гласных', new_message)

Введите слово или предложение Илья
Создана новая строка л
Создана новая строка л
Все, мы получили ваше предложение без гласных л

С английскими словами ок. С русскими происходит следующее: программа берет первую согласную в слове и печатает именно ее столько раз, сколько вообще согласных в слове. Пример с другим словом:

Введите слово или предложение Панатинаикос
Создана новая строка П
Создана новая строка П
Создана новая строка П
Создана новая строка П
Создана новая строка П
Создана новая строка П
Все, мы получили ваше предложение без гласных П

Понимаете? Если с кодом все верно, то правда что-то с кодировкой..
Вопрос пустяковый, но хочется сразу с кодировками разобраться и понять что к чему, чтобы потом не было проблем из-за этого.
J.R.
.
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