10

プログラムは、アルファベット順で 8 つの要素のうち最後の要素である名前を出力する必要があります。名前/単語は、コードを介して任意の方法で入力できます。in range()私はリストとここを使うべきだと思います。入力名の最初/2番目/3番目/...の文字を前の文字と比較し、それをリストの最後または前の文字の前に置くという考えがありました(比較に応じて) )、次の名前に対してそれを繰り返します。最後に、プログラムはリストの最後のメンバーを出力します。

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

これを大文字と小文字の区別にとらわれないようにしたい場合は、最初に sを呼び出すようstr.lower()にしてください。word

sentence = [word.lower() for word in sentence] # do this before running any of the above algorithms
于 2012-12-10T21:31:17.537 に答える
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 に答える
3

メソッドを使用しsort()ます。

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

出力は、

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

最後が必要な場合は、max()メソッドを使用できます。

于 2012-12-10T21:31:54.260 に答える
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 に答える
0

Python では、メソッド sort() はすべての文字列をアルファベット順にソートするため、その関数を使用できます。

すべての単語のリストを作成してから、次のことができます。

  listName.sort()

これにより、アルファベット順にソートされたリストが生成されます。

于 2012-12-10T21:34:40.213 に答える