web-dev-qa-db-ja.com

Python 3でprintfのように印刷するにはどうすればいいですか?

Python 2では私が使った:

print "a=%d,b=%d" % (f(x,n),g(x,n))

私はもう試した:

print("a=%d,b=%d") % (f(x,n),g(x,n))
109
Mike L

Python 2では、printはステートメントを導入するキーワードでした。

print "Hi"

Python3では、printは呼び出すことができる関数です。

print ("Hi")

どちらのバージョンでも、%は、左側に文字列、右側に値または値のタプルまたはマッピングオブジェクト(dictなど)を必要とする演算子です。

だから、あなたの行は次のようになるはずです。

print("a=%d,b=%d" % (f(x,n),g(x,n)))

また、Python 3以降では、{}-style形式の代わりに%-style形式を使用することをお勧めします。

print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))

Python 3.6ではさらに別の文字列フォーマットパラダイムが導入されました: f-strings

print(f'a={f(x,n):d}, b={g(x,n):d}')
183
Robᵩ

最も推奨される方法はformatメソッドを使うことです。詳しくはこちら をご覧ください

a, b = 1, 2

print("a={0},b={1}".format(a, b))
49
thefourtheye

O'ReillyのPython Cookbook からの単純なprintf()関数。

import sys
def printf(format, *args):
    sys.stdout.write(format % args)

出力例

i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14
23

Python 3.6では、インライン補間用にf文字列が導入されました。さらに優れているのは、内挿付きの書式指定子も使用できるように構文が拡張されたことです。私がこれをグーグルしている間に私が取り組んでいた何か(そしてこの古い質問に出会いました!):

print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')

PEP 498 に詳細があります。そして...それは他の言語のフォーマット指定子で私のお気に入りをソートしました - それ自身が式になることができる指定子を可能にします!わーい! フォーマット指定子 を参照してください。

19
kva1966

簡単な例:

print("foo %d, bar %d" % (1,2))

13
Donald Derek

もっと簡単なものです。

def printf(format, *values):
    print(format % values )

その後:

printf("Hello, this is my name %s and my age %d", "Martin", 20)
8
Famory Toure

%print(...)の括弧の外側にあるため、変数をprint呼び出しのresultに挿入しようとしています。 print(...)Noneを返すので、これはうまくいきません。そして、あなたがすでにあなたのテンプレートを印刷したことがあることは、私たちが住んでいる宇宙の法則によって禁止されていることもあります。

%とそのオペランドを含めて、印刷したいものはすべて、insideprint(...)呼び出しである必要があります。これにより、文字列を印刷する前に作成することができます。

print( "a=%d,b=%d" % (f(x,n), g(x,n)) )

明確にするために、いくつか余分なスペースを追加しました(ただし、これらは必要ではなく、一般的には良いスタイルとは見なされません)。

3
kindall
print("Name={}, balance={}".format(var-name, var-balance))
1
User707

その他の単語printfがpythonに存在しない...びっくりしました!最高のコードは

def printf(format, *args):
    sys.stdout.write(format % args)

この形式のため、印刷できません。\ nその他すべてそれがprintが悪いオペレータだからです。また、特別な形式で引数を書く必要があります。上記の機能に不利益はありません。これはprintf関数の標準的な通常の形式です。

0
Anatoliy