Pythonで複数の引数を出力する


309

これは私のコードのほんの一部です:

print("Total score for %s is %s  ", name, score)

しかし、私はそれを印刷して欲しい:

「(名前)の合計スコアは(スコア)です」

ここで、nameはリスト内の変数で、scoreは整数です。それがまったく役立つ場合、これはPython 3.3です。

回答:


559

これを行うには多くの方法があります。%-formatting を使用して現在のコードを修正するには、タプルを渡す必要があります。

  1. タプルとして渡します:

    print("Total score for %s is %s" % (name, score))

単一の要素を持つタプルはのようになり('this',)ます。

その他の一般的な方法は次のとおりです。

  1. 辞書として渡します:

    print("Total score for %(n)s is %(s)s" % {'n': name, 's': score})

新しいスタイルの文字列フォーマットもあり、少し読みやすいかもしれません。

  1. 新しいスタイルの文字列フォーマットを使用します。

    print("Total score for {} is {}".format(name, score))
  2. 数字を使用した新しいスタイルの文字列フォーマットを使用します(同じものを複数回並べ替えたり印刷したりする場合に便利です):

    print("Total score for {0} is {1}".format(name, score))
  3. 明示的な名前で新しいスタイルの文字列フォーマットを使用します。

    print("Total score for {n} is {s}".format(n=name, s=score))
  4. 文字列を連結します。

    print("Total score for " + str(name) + " is " + str(score))

私の意見では最も明確な2つ:

  1. 値をパラメーターとして渡すだけです。

    print("Total score for", name, "is", score)

    print上記の例でスペースを自動的に挿入したくない場合は、sepパラメーターを変更します。

    print("Total score for ", name, " is ", score, sep='')

    Python 2を使用してprintいる場合、はPython 2の関数ではないため、最後の2つは使用できません。ただし、次の場所からこの動作をインポートできます__future__

    from __future__ import print_function
  2. fPython 3.6で新しい-string形式を使用します。

    print(f'Total score for {name} is {score}')

7
もちろん、常に昔、不承認の方法があります:print("Total score for "+str(name)"+ is "+str(score))
ヘビとコーヒー

5
@SnakesandCoffee:私はただそうしますprint("Total score for", name, "is", score)
Blender

4
私の+1。最近で.format()は、古いものよりも読みやすくすることを好み% (tuple)ます。ただし、%補間が速いことを示すテストを見たことがあります。print('xxx', a, 'yyy', b)また、簡単な例の罰金です。また.format_map()、引数としてディクショナリを使用して学習することをお勧めし'ssss {key1} xxx {key2}'ます。テンプレートからテキストを生成するのに便利です。古いものもありstring_template % dictionaryます。しかし、テンプレートはそれほどきれいに見えません'ssss %(key1)s xxx %(key2)s'
pepr 2013年

6
FYI、Pythonの3.6のように、我々が得るF-文字列あなたが今も行うことができますので、print(f"Total score for {name} is {score}")明示的な関数呼び出しで(限りとnameし、score明らかに範囲内にあります)。
ShadowRanger

57

それを印刷する方法はたくさんあります。

別の例を見てみましょう。

a = 10
b = 20
c = a + b

#Normal string concatenation
print("sum of", a , "and" , b , "is" , c) 

#convert variable into str
print("sum of " + str(a) + " and " + str(b) + " is " + str(c)) 

# if you want to print in tuple way
print("Sum of %s and %s is %s: " %(a,b,c))  

#New style string formatting
print("sum of {} and {} is {}".format(a,b,c)) 

#in case you want to use repr()
print("sum of " + repr(a) + " and " + repr(b) + " is " + repr(c))

EDIT :

#New f-string formatting from Python 3.6:
print(f'Sum of {a} and {b} is {c}')

3
print("sum of {0} and {1} is {2}".format(a,b,c)) やり過ぎですprint("sum of {} and {} is {}".format(a,b,c)) 。順序を変更したくない場合は省略できます。
ジャン=フランソワ・ファーブル

39

使用.format()::

print("Total score for {0} is {1}".format(name, score))

または:

// Recommended, more readable code

print("Total score for {n} is {s}".format(n=name, s=score))

または:

print("Total score for" + name + " is " + score)

または:

`print("Total score for %s is %d" % (name, score))`

21

Python 3.6では、f-stringよりクリーンです。

以前のバージョンでは:

print("Total score for %s is %s. " % (name, score))

Python 3.6の場合:

print(f'Total score for {name} is {score}.')

しましょう。

より効率的でエレガントです。


15

単純にしておくと、個人的には文字列の連結が好きです。

print("Total score for " + name + " is " + score)

Python 2.7と3.Xの両方で動作します。

注:スコアがintの場合、それをstrに変換する必要があります

print("Total score for " + name + " is " + str(score))


11

ただこれに従ってください

idiot_type = "the biggest idiot"
year = 22
print("I have been {} for {} years ".format(idiot_type, years))

または

idiot_type = "the biggest idiot"
year = 22
print("I have been %s for %s years."% (idiot_type, year))

そして、他のすべてを忘れてください、さもなければ、脳はすべてのフォーマットをマップすることができません。


6
print("Total score for %s is %s  " % (name, score))

%s%dまたはで置き換えることができます%f


6

使用f-string

print(f'Total score for {name} is {score}')

または

使用.format

print("Total score for {} is {}".format(name, score))

5

場合はscore、その後、数あります

print("Total score for %s is %d" % (name, score))

スコアが文字列の場合、

print("Total score for %s is %s" % (name, score))

スコアが数値の場合は、%d文字列の%s場合は、スコアが浮動小数点の場合はです。%f


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.