したがって、構文は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ステートメントを変更するにはどうすればよいですか?
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
ではなく、整数の形式指定子です。
バージョン3.6+: フォーマットされた文字列リテラル 、f-stringを使用
print(f"{i}. {key} appears {wordBank[key]} times.")
フォーマット構文を試してください:
print ("{0}. {1} appears {2} times.".format(1, 'b', 3.1415))
出力:
1. b appears 3.1415 times.
Print関数は、他の関数と同様に、そのすべての引数を括弧で囲んで呼び出されます。
次のように文字列をフォーマットすることもできます。
>>> 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.
問題は、)
の配置ミスのようです。サンプルでは、print()
の外側に%
があります。内部に移動する必要があります。
これを使って:
print("%s. %s appears %s times." % (str(i), key, str(wordBank[key])))