-1

まず、これは私のコードです:

s = raw_input("code: ")
s1 = " ".join(s.split()[::-1])
lists = s1.split()
for i in lists:
    if i.istitle() == True:
        print i

現在行っていることは、文字列を反転し、大文字で始まる単語を出力することです。ただし、問題は、単語が「CAPital」のような場合、印刷されないことです。

プログラムがどのように機能するかの例をいくつか示します。

  1. 単語を逆順に読む
  2. メッセージ内の大文字で始まる単語にのみ注意してください

    これが入力された場合: Base fOO The AttACK その後、返されるはずです: 基地を攻撃します

もう一つの例:

code: soMe SuPPLies liKE Ice-cREAm aRe iMPORtant oNly tO THeir cReaTORS. tO DestroY thEm iS pOInTLess.
says: destroy their ice-cream supplies

どうもありがとう!

4

4 に答える 4

3

あなたは必要ありませんistitle

if word[0].isupper():
    # do stuff
于 2012-09-08T04:04:55.503 に答える
1

.istitle()は、各単語の最初の文字のみが大文字の場合にのみ真です。

print 'MArk'.istitle()
print 'Mark'.istitle()  # True
print 'MARK'.istitle()
print 'marK'.istitle()
print 'Spam SPAM'.istitle()
print 'SPam Spam'.istitle()
print 'Spam Spam'.istitle() # True

したがって、最初の文字をテストするだけです。

strings = [
    'BaSe fOO ThE AttAcK',
    'soMe SuPPLies liKE Ice-cREAm aRe iMPORtant oNly tO THeir cReaTORS. tO DestroY thEm iS pOInTLess']
for s in strings:
    print ' '.join(
        i for i in reversed(s.split()) if i[0].isupper()
        ).lower()

出力:

attack the base
destroy their ice-cream supplies
于 2012-09-08T04:18:43.350 に答える
0
for i in lists:
    if i[0].isupper() and  i[1].islower():
        print i
于 2012-09-08T03:53:10.900 に答える
0

これを試すことができます

s1 = s.split()[::-1]
for word in s1:
    if word[0].istitle() is True:
        out_list.append(word.lower())
print " ".join(out_list)

または、より複雑だが短いバージョンで

print " ".join(map(str.lower, filter(lambda x:x[0].istitle(), s.split()[::-1])))
于 2012-09-08T04:04:08.220 に答える