3

私のコード

beginning = input("What would you like to acronymize? : ")

second = beginning.upper()

third = second.split()

fourth = "".join(third[0])

print(fourth)

何が欠けているのか分からないようです。コードは、ユーザーが入力したフレーズを想定しており、すべて大文字で入力し、単語に分割し、各単語の最初の文字を結合して出力します。どこかにループがあるべきだと思いますが、それが正しいかどうか、またはどこに置くべきかは完全にはわかりません。

4

6 に答える 6

4

入力が「連邦政府機関局」であるとします

入力third[0]すると、分割の最初の要素である "Federal" が表示されます。スプリット内の各要素の最初の要素が必要です。ジェネレータ内包表記またはリスト内包表記を使用[0]して、リスト内の各項目に適用します。

val = input("What would you like to acronymize? ")
print("".join(word[0] for word in val.upper().split()))

Python では、ここで明示的なループを使用することは慣用的ではありません。ジェネレータ内包表記は短くて読みやすく、明示的なアキュムレータ変数を使用する必要がありません。

于 2014-05-19T21:49:57.983 に答える
2

コードを実行するthird[0]と、Python は変数にインデックスを付け、thirdその最初の部分を提供します。

の結果は.split()文字列のリストです。したがって、third[0]単一の文字列、最初の単語 (すべて大文字) です。

各単語の最初の文字を取得するには、ある種のループが必要です。さもなければ、正規表現で何かを行うことができます。ループをお勧めします。

これを試して:

fourth = "".join(word[0] for word in third)

への呼び出しの中に小さなforループがあります.join()。Python ではこれを「ジェネレータ式」と呼んでいます。変数wordは からの各単語thirdに順番に設定され、word[0]必要な文字が取得されます。

于 2014-05-19T21:51:11.270 に答える
1

このように私のために働きます:

>>> a = "What would you like to acronymize?"
>>> a.split()
['What', 'would', 'you', 'like', 'to', 'acronymize?']
>>> ''.join([i[0] for i in a.split()]).upper()
'WWYLTA'
>>> 
于 2014-05-19T21:49:53.443 に答える
0

直感的なアプローチの 1 つとして、次のようなものがあります。

  1. input (または python 2 では raw_input ) を使用して文を取得します
  2. 文を単語のリストに分割する
  3. 各単語の最初の文字を取得する
  4. スペース文字列で文字を結合する

コードは次のとおりです。

sentence = raw_input('What would you like to acronymize?: ')
words = sentence.split() #split the sentece into words
just_first_letters = [] #a list containing just the first letter of each word

#traverse the list of words, adding the first letter of
#each word into just_first_letters
for word in words:
    just_first_letters.append(word[0])
result = " ".join(just_first_letters) #join the list of first letters
print result
于 2014-05-19T22:00:47.030 に答える