2012-06-22 3 views
-1

Пожалуйста, введите строку: Python и Perl являются языки программированияРасщепление Приговоры в Python

Python 
Perl 
and 
are 
programming 
languages 

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

Благодаря

+1

пожалуйста, покажите нам код ... – avasal

+0

вопрос непонятен – Fivesheep

+3

это ваша домашняя работа? –

ответ

4

Ваш пример вывода является неправильным, так как он будет выглядеть следующим образом:

Perl 
Python 
and 
are 
languages 
programming 

Сортировка по капиталу первого приведет к Perl выше Python, потому что e приходит первым. Кроме того, поскольку верхний регистр на первом месте, вы можете просто сделать

print "\n".join(sorted(a.split())) 

, чтобы получить желаемый результат.

EDIT: После перечитывая вопрос, который я придумал это исправить/выход:

print "\n".join(sorted(a.split(), key=lambda x: x >= 'a')) 

Выход:

Python 
Perl 
and 
are 
programming 
languages 

Объяснение: функции сортировки в Python являются stable, что означает, что порядок элементов сохраняется относительно друг друга, если они имеют один и тот же ключ сравнения. Ключевая функция присваивает значение True всему, что больше или равно 'a' (это любая строка, начинающаяся с строчной буквы), иначе False. False сравнивает меньше True, поэтому все прописные буквы перемещаются вперёд, без изменения порядка прописных или строчных слов.

+0

Но это меняет порядок слов. – pepr

+0

Ох ... Я думаю, что неправильно понял вопрос. Я исправлю: P Исправлено. – hochl

+0

My +1. Хорошее решение, хотя нужно больше думать о том, как это работает. Кроме того, алгоритм сортировки должен быть * стабильным * (т. Е. Сохранять порядок элементов с одним и тем же ключом). – pepr

1

Если это домашнее задание, вы должны дать ему тег «домашнее задание». Во всяком случае, идея использовать два списка неплоха.

  1. Инициализировать два списка на пустые.
  2. Разделите входное предложение, используя метод строки, чтобы получить слова.
  3. Используйте раздельное выражение непосредственно в цикле for для обработки извлеченных слов.
  4. Если word - это строковая переменная, то word[0] - ее первый символ. Если оно меньше или равно 'Z', оно является заглавным словом и должно быть добавлено к разыскиваемому списку.
  5. Используйте '\n'.join(lst), чтобы получить многострочную строку из списка слов.
+0

@hochl: Спасибо за исправление ошибки;) – pepr

+0

+1 Я думаю, что для очень длинных предложений, используя два списка, может быть быстрее, чем сортировка, но я не пробовал это. – hochl

Смежные вопросы