2016-04-28 6 views
1

Python 2.7.10でアルゴリズムを作成しようとしていますが、これを分割して単語をリストに入れ、そのリストからすべての単語を取り出して印刷します特定の方法。Python 2.7で複数のプレースホルダーフォーマッターを使用した文字列を印刷

usr_input = raw_input(' > ') 

input = usr_input.split(' ') 

print "You think that the painting is:" 
print "%s" + ", %s" * len(input) + "." % (> ? <) 

%sフォーマッタはプレースホルダとして機能します。問題は、文字列の一部として印刷されるプレースホルダの数が修正されていないことです。これはlen(input)に相当します。したがって、これらのフォーマッタに値を割り当てる方法はわかりません。 (。それは括弧の内側に「?> <」の部分です)

注:このようはテスト目的でのみ、のように、ユーザーがのみなど、文字列ではなく整数を、入力されると仮定しましょう%rフォーマッタは必要ありません。

所望の出力は、多少、次のようになります。

> nice pretty funny 
You think that the painting is: 
nice, pretty, funny. 

私は、これはstr.join(str)メソッドを使用して達成することができます知っているが、私は上記で説明したようにそれを行う方法はありますか?ありがとう。 、基本的に

print ",".join(["%s"] * len(input)) % tuple(input) 

"%s, "あなたの文字列を作成...と文字列フォーマッタにリストとして入力を渡す:

+0

@Anshuクマーのみんなありがとう、Anshu Kumarが問題を解決するために管理。 –

答えて

0

使用print ("%s" + ", %s" * (len(input) - 1) + ".") % tuple(input)

しかし、IMO ', '.join(input) + '.'が良いです:)あなたの貢献のための

+0

ありがとうございます!それが問題を解決しました。好奇心の念から、(私はPythonの初心者です)なぜ '.join(str)'メソッドがここで使う方が良いと思いますか? (文字列を組み合わせるために 'str + str'より一般的に使用する方が良いでしょうか?) –

+0

もっとpythonicで一般的に高速です。 –

0

あなたはこれを行うことによって、あなたがやりたいことができます。あなたはそれを書いたのとまったく同じように、あなたのリストを渡すだけです。

print "%s" + ", %s" * len(input)) + "." % tuple(input) 
+0

こんにちは、答えはありがたいですが、リストを渡してみましたが、次のようになります。 'TypeError:フォーマット文字列の引数が不十分です.' 'TypeError:%: 'list'と 'list'のサポートされていないオペランドタイプ '%s、&s、&s、%、 s.' 私は '.join(str)'メソッドなしでそれを行う方法があるかどうかを調べたいと思っています。 –

+0

申し訳ありません。私の答えを編集 - 私はぶら下がっている括弧のエラーがあった。 – mprat

+0

気にしないでください。 –

0

「%」の後にタプルを使用する必要があります。あなたはすでに印刷物の最初の単語を考慮しているので、len(入力)-1の単語はそのまま書き込まれます。

usr_input = raw_input(' > ') 

input = usr_input.split(' ') 

output = "%s" + ", %s" * (len(input) - 1) + "." 
print "You think that the painting is:" 
print output % tuple(input) 
+0

こんにちは、コンセプトのおかげで、入力をタプルに変換すると、おそらくトリックが実行されます。あなたのコードを実行しようとすると、いくつかの引数を入力した後にエラーが出ますが。 '> a あなたは絵が次のようだと思っています: "%s "+"、%s "*(len(input) - 1)+"。 %tuple(入力) TypeError:文字列書式中にすべての引数が変換されませんでした。 –

+0

連結よりもフォーマットが優先され、したがってエラーが発生しました。 –

+0

ありがとうございます。私はそれを修正しました。 – lev

関連する問題