Уведомления

Группа в Telegram: @pythonsu

#1 Июль 19, 2015 22:20:32

ilya19
Зарегистрирован: 2015-07-19
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Программа "Без гласных", ошибка с русскими словами.

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

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/ Пайтон только начал изучать, строго не судите.

Офлайн

#2 Июль 20, 2015 03:26:35

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Программа "Без гласных", ошибка с русскими словами.

ilya19
Что не так?

Код не в тегах.



Офлайн

#3 Июль 20, 2015 06:05:28

J.R.
Зарегистрирован: 2015-07-18
Сообщения: 147
Репутация: +  16  -
Профиль  

Программа "Без гласных", ошибка с русскими словами.

.

Отредактировано J.R. (Фев. 27, 2016 16:01:15)

Офлайн

#4 Июль 20, 2015 06:21:25

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

Программа "Без гласных", ошибка с русскими словами.

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)
ль
>>>



Отредактировано py.user.next (Июль 20, 2015 06:22:47)

Офлайн

#5 Июль 20, 2015 06:25:42

J.R.
Зарегистрирован: 2015-07-18
Сообщения: 147
Репутация: +  16  -
Профиль  

Программа "Без гласных", ошибка с русскими словами.

.

Отредактировано J.R. (Фев. 27, 2016 16:01:39)

Офлайн

#6 Июль 30, 2015 21:30:53

ilya19
Зарегистрирован: 2015-07-19
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Программа "Без гласных", ошибка с русскими словами.

Ось 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..

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

Офлайн

#7 Июль 31, 2015 06:33:28

J.R.
Зарегистрирован: 2015-07-18
Сообщения: 147
Репутация: +  16  -
Профиль  

Программа "Без гласных", ошибка с русскими словами.

.

Отредактировано J.R. (Фев. 27, 2016 16:02:07)

Офлайн

#8 Июль 31, 2015 10:33:54

neitro
Зарегистрирован: 2015-03-13
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Программа "Без гласных", ошибка с русскими словами.

1) в начале файла должно быть
# -*- coding: utf-8 -*-
2) GLASNYE = u'eyuioaйуеыаоэёяию'

Офлайн

#9 Июль 31, 2015 12:20:36

ilya19
Зарегистрирован: 2015-07-19
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Программа "Без гласных", ошибка с русскими словами.

У меня питон 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)

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

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

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

Понимаете? Если с кодом все верно, то правда что-то с кодировкой..
Вопрос пустяковый, но хочется сразу с кодировками разобраться и понять что к чему, чтобы потом не было проблем из-за этого.

Офлайн

#10 Июль 31, 2015 12:57:31

J.R.
Зарегистрирован: 2015-07-18
Сообщения: 147
Репутация: +  16  -
Профиль  

Программа "Без гласных", ошибка с русскими словами.

.

Отредактировано J.R. (Фев. 27, 2016 16:02:31)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version