web-dev-qa-db-ja.com

Python 3.4での変数の印刷

したがって、構文はPython 2で学んだことから変わったようです...ここに私がこれまでに持っているものがあります

for key in Word:
    i = 1
    if i < 6:
        print ( "%s. %s appears %s times.") % (str(i), key, str(wordBank[key]))

最初の値はint、2番目は文字列、最後はintです。

変数を正しく印刷するようにprintステートメントを変更するにはどうすればよいですか?

33
algorhythm

printが関数になりました という構文が変更されました。これは、%のフォーマットを括弧内で行う必要があることを意味します。1

print("%d. %s appears %d times." % (i, key, wordBank[key]))

ただし、Python 3.x.を使用しているため、実際には新しい str.format メソッドを使用する必要があります。

print("{}. {} appears {} times.".format(i, key, wordBank[key]))

%のフォーマットは公式には推奨されていません(まだ)が、str.formatを支持することは推奨されておらず、おそらく次のバージョンでは言語から削除されます( Python 4かもしれない?)。


1ちょっとした注意:%dは、%sではなく、整数の形式指定子です。

91
iCodez

バージョン3.6+: フォーマットされた文字列リテラルf-stringを使用

print(f"{i}. {key} appears {wordBank[key]} times.")
28
wwii

フォーマット構文を試してください:

print ("{0}. {1} appears {2} times.".format(1, 'b', 3.1415))

出力:

1. b appears 3.1415 times.

Print関数は、他の関数と同様に、そのすべての引数を括弧で囲んで呼び出されます。

7
horns

次のように文字列をフォーマットすることもできます。

>>> print ("{index}. {Word} appears {count} times".format(index=1, Word='Hello', count=42))

どの出力

1. Hello appears 42 times.

値には名前が付けられているため、順序は関係ありません。以下の例を出力すると、上記の例と同じになります。

>>> print ("{index}. {Word} appears {count} times".format(count=42, index=1, Word='Hello'))

この方法で文字列をフォーマットすると、これを行うことができます。

>>> data = {'count':42, 'index':1, 'Word':'Hello'}
>>> print ("{index}. {Word} appears {count} times.".format(**data))
1. Hello appears 42 times.
5
Erion V

問題は、)の配置ミスのようです。サンプルでは、​​print()の外側に%があります。内部に移動する必要があります。

これを使って:

print("%s. %s appears %s times." % (str(i), key, str(wordBank[key])))
1
adarsh