これは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進整数形式です。引数を選択するときにできることは他にもたくさんあります(位置引数の代わりに名前付き引数を使用する、フィールドにアクセスするなど)および多くの形式オプション(数字をパディングする、数千のセパレータを使用する、符号を表示するかどうかなど)もあります。他の例:
"({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のバージョンも同様です。好みの問題だと言う人もいるかもしれませんが、新しい方が古い方よりもはるかに表現力があり、新しいコードを書くときは常に使用する必要があります(もちろん、古い環境をターゲットにしている場合を除きます)。
その行は、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)'
非推奨ではありませんでした。コードは正常に動作します。続きを読む こちら 。
私はこのアプローチが好きです
my_hash = {}
my_hash["goals"] = 3 #to show number
my_hash["penalties"] = "5" #to show string
print("I scored %(goals)d goals and took %(penalties)s penalties" % my_hash)
括弧に追加されたdとsにそれぞれ注意してください。
出力は次のようになります。
I scored 3 goals and took 5 penalties