-1

请输入字符串:Python 和 Perl 是编程语言

Python
Perl
and
are 
programming
languages

我想要拆分输入,但大写单词在顶部。我正在考虑使用两个列表:一个带有标题大小写单词,一个带有较低的单词。我正在尝试使用 if 语句将单词放在某个列表中。请提出一些想法!

谢谢

4

2 回答 2

4

您的示例输出是错误的,因为它看起来像这样:

Perl
Python
and
are
languages
programming

按大写优先排序会导致Perl上述结果,Python因为e先到先得。此外,因为大写首先出现,所以你可以简单地做

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

得到想要的结果。

编辑:重读问题后,我想出了这个修复/输出:

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

输出:

Python
Perl
and
are
programming
languages

解释: Python 中的排序函数是stable的,这意味着如果元素具有相同的比较键,则它们的相对顺序会保持不变。key 函数将为True大于或等于的任何值'a'(即任何以小写字母开头的字符串)分配值,否则为FalseFalse比较小于True,所以任何大写字母都被移到前面,而不改变大写或小写单词的顺序。

于 2012-06-22T07:29:11.047 回答
1

如果是作业,你应该给它一个标签“作业”。无论如何,使用两个列表的想法还不错。

  1. 将两个列表初始化为空列表。
  2. 使用字符串的方法拆分输入句子.split()以获取单词。
  3. 在循环中直接使用拆分表达式for来处理提取的单词。
  4. 如果word是字符串变量,那么word[0]是它的第一个字符。如果它小于或等于'Z'它是一个大写的单词,应该附加到想要的列表中。
  5. 用于'\n'.join(lst)从单词列表中获取多行字符串。
于 2012-06-22T07:32:18.413 回答