私はこれをPython 2で行います:
"(%d goals, $%d)" % (self.goals, self.penalties)
これのPython 3バージョンは何ですか?
オンラインで例を検索してみましたが、Python 2バージョンが何度も表示されていました。
私はこれをPython 2で行います:
"(%d goals, $%d)" % (self.goals, self.penalties)
これのPython 3バージョンは何ですか?
オンラインで例を検索してみましたが、Python 2バージョンが何度も表示されていました。
回答:
これは、「新しい」フォーマット構文に関するドキュメントです。例は次のとおりです。
"({:d} goals, ${:d})".format(self.goals, self.penalties)
もし両方goals
とpenalties
整数(つまり、彼らのデフォルトの形式はOKです)、それが短縮することができています:
"({} goals, ${})".format(self.goals, self.penalties)
また、パラメーターはのフィールドでself
あるため、単一の引数を2回使用してそれを行う方法もあります(@Burhan Khalidがコメントに記載されています)。
"({0.goals} goals, ${0.penalties})".format(self)
説明:
{}
デフォルトのフォーマットで、次の位置引数のみを意味します。{0}
0
デフォルトのフォーマットで、インデックス付きの引数を意味します。{:d}
10進整数形式の次の位置引数です。{0:d}
0
10進整数形式のindex付きの引数です。引数を選択するとき(位置引数の代わりに名前付き引数を使用する、フィールドにアクセスするなど)や、多くの書式オプション(数値の埋め込み、数千の区切り文字の使用、記号の表示など)を実行するときにできることは他にもたくさんあります。その他の例:
"({goals} goals, ${penalties})".format(goals=2, penalties=4)
"({goals} goals, ${penalties})".format(**self.__dict__)
"first goal: {0.goal_list[0]}".format(self)
"second goal: {.goal_list[1]}".format(self)
"conversion rate: {:.2f}".format(self.goals / self.shots) # '0.20'
"conversion rate: {:.2%}".format(self.goals / self.shots) # '20.45%'
"conversion rate: {:.0%}".format(self.goals / self.shots) # '20%'
"self: {!s}".format(self) # 'Player: Bob'
"self: {!r}".format(self) # '<__main__.Player instance at 0x00BF7260>'
"games: {:>3}".format(player1.games) # 'games: 123'
"games: {:>3}".format(player2.games) # 'games: 4'
"games: {:0>3}".format(player2.games) # 'games: 004'
注:他の人が指摘したように、新しい形式は前者に取って代わりません。どちらも、Python 3とPython 2の新しいバージョンの両方で使用できます。好みの問題だと言う人もいますが、新しいものは古いものよりはるかに表現力があり、新しいコードを書くときはいつでも使用する必要があります(もちろん、古い環境を対象としている場合を除きます)。
"({0.goals} goals, ${0.penalties})".format(self)
"conversion rate: {:.2%}".format(self.goals / self.shots)
?そのままで問題なく動作f
します...(Python 3.4)何もないことに注意してください。浮動小数点数としてではなく、パーセンテージとしてフォーマットするように求めています。
"{:.2f}%".format(float_num)
どちらでも問題なく機能します。
$
古い形式の構文でも新しい中にも、ここでは特別な意味を持っていない、ので変わらず、生成された文字列の中に存在すべきです。
その行はPython 3でそのまま機能します。
>>> sys.version
'3.2 (r32:88445, Oct 20 2012, 14:09:29) \n[GCC 4.5.2]'
>>> "(%d goals, $%d)" % (self.goals, self.penalties)
'(1 goals, $2)'