10

程序必须打印按字母顺序排列的 8 个元素中最后一个的名称。可以通过代码以任何方式输入名称/单词。我想我应该在in range()这里使用列表。我有一个想法,将输入名称的第一个/第二个/第三个/...字母与前一个字母的字母进行比较,然后将其放在列表的末尾或前一个的前面(取决于比较),然后重复下一个名称。最后,程序将打印列表的最后一个成员。

4

7 回答 7

9

Python 的字符串比较默认是词法的,所以你应该能够调用max它并摆脱它:

In [15]: sentence
Out[15]: ['this', 'is', 'a', 'sentence']
In [16]: max(sentence)
Out[16]: 'this'

当然,如果您想手动执行此操作:

In [16]: sentence
Out[16]: ['this', 'is', 'a', 'sentence']

In [17]: answer = ''

In [18]: for word in sentence:
   ....:     if word > answer:
   ....:         answer = word
   ....:         

In [19]: print answer
this

或者你可以对你的句子进行排序:

In [20]: sentence
Out[20]: ['this', 'is', 'a', 'sentence']

In [21]: sorted(sentence)[-1]
Out[21]: 'this'

或者,倒序排序:

In [25]: sentence
Out[25]: ['this', 'is', 'a', 'sentence']

In [26]: sorted(sentence, reverse=True)[0]
Out[26]: 'this'

但是如果你想完全手动(这太痛苦了):

def compare(s1, s2):
    for i,j in zip(s1, s2):
        if ord(i)<ord(j):
            return -1
        elif ord(i)>ord(j):
            return 1
    if len(s1)<len(s2):
        return -1
    elif len(s1)>len(s2):
        return 1
    else return 0

answer = sentence[0]
for word in sentence[1:]:
    if compare(answer, word) == -1:
        answer = word

# answer now contains the biggest word in your sentence

如果您希望这与大小写无关,请务必先调用str.lower()word的 s :

sentence = [word.lower() for word in sentence] # do this before running any of the above algorithms
于 2012-12-10T21:31:17.537 回答
3

使用sort()方法。

strings = ['c', 'b', 'a']
strings.sort()
print strings

输出将是,

['a', 'b', 'c']

如果你想要最后一个,你可以使用该max()方法。

于 2012-12-10T21:31:54.260 回答
3

如上一个答案所述,字符串比较默认情况下是词法的,因此min()可以max()使用。要同时处理大写和小写单词,可以指定key=str.lower. 例如:

s=['This', 'used', 'to', 'be', 'a', 'Whopping', 'Great', 'sentence']
print min(s), min(s, key=str.lower)
# Great a

print max(s), max(s, key=str.lower)
# used Whopping
于 2012-12-10T21:47:42.183 回答
2

如果你有大写单词和小写单词的混合,你可以这样做:

from string import capwords     

words = ['bear', 'Apple', 'Zebra','horse']

words.sort(key = lambda k : k.lower())

answer = words[-1]

结果:

>>> answer
'Zebra'
>>> words
['Apple', 'bear', 'horse', 'Zebra']
于 2012-12-10T21:40:44.370 回答
1

我会这样做。

  1. 定义字符串:为了参数,让我们说字符串已经预定义。

    sentence = "This is the sentence that I need sorted"
    
  2. 使用split()方法:该方法从字符串split()中返回一个“单词”列表。sentence我在这里松散地使用术语“单词”,因为该方法没有“单词”的概念,它只是通过将sentence字符串解析为由空格分隔的字符并将这些字符作为列表中的离散项输出来将其分隔为一个列表。此列表尚未按字母顺序排列。

    split_sentence = sentence.split()
    
  3. 使用sorted函数: sorted 函数返回按字母顺序排列的split_sentence列表版本。

     sorted_sentence = sorted(split_sentence)
    
  4. 打印列表中的最后一个元素:

    print(sorted_sentence[-1])
    
于 2017-02-09T15:42:18.373 回答
0

In python the method sort() sorts all strings alphabetically so you can use that function.

You can make a list of all your words and then :

  listName.sort()

This would result a alphabetically sorted list.

于 2012-12-10T21:34:40.213 回答
0

只需使用以下内容:

max(sentence.lower().split())
于 2017-02-06T11:36:51.280 回答