Форум сайта python.su
0
Очень простая программа.
Должна получить предложение у пользователя, после чего вывести его же, но без гласных. Код такой у меня:
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/ Пайтон только начал изучать, строго не судите.
Офлайн
33
ilya19
Что не так?
Офлайн
.
Отредактировано J.R. (Фев. 27, 2016 16:01:15)
Офлайн
857
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)
Офлайн
.
Отредактировано J.R. (Фев. 27, 2016 16:01:39)
Офлайн
0
Ось 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. (Фев. 27, 2016 16:02:07)
Офлайн
0
1) в начале файла должно быть
# -*- coding: utf-8 -*-
2) GLASNYE = u'eyuioaйуеыаоэёяию'
Офлайн
0
У меня питон 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. (Фев. 27, 2016 16:02:31)
Офлайн