PyQオフィシャルブログ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

数字の入った変数で '在庫:' + stock とできないのはなぜ?

こんにちは。PyQ開発チームの清原 id:hirokiky です。

PyQメールサポートの中でいただいたご質問とサポートの回答を紹介します。 (質問いただいたご本人様には掲載の許可をいただいております)

Pythonを学習する中や PyQ を利用する中で同じ疑問あれば参考にしてください!

ご質問

クエスト 3-1 水注文プログラムを写経するクエスト

stock = 13
print('現在の在庫:' + str(stock) + '本')

のprint文、ただのstockと書くとエラーになるのはなぜですか?

回答

strをなしに

‘現在の在庫:’ + stock + ‘本’

と書くとエラーになる理由ということですよね。

これは文字列('現在の在庫')と数字(stockの中身13)を足しあわせようとしているのでエラー(TypeError)になります。

Pythonでは文字列と数字は足し算できません。文字列と文字列、数字と数字はできます。

PyQのプログラムでは str(stock) とすることで、数字の 13 を、文字列の ‘13’ に変換しています。

  • 数字: 13
  • 文字: ‘13’

(ややこしいですが別のものです。。) 一旦数字を文字列の ‘13’ に変換してから、他の文字列 ‘現在の在庫:’ と足し合わせています。

文字列の生成には .format が使えます

この最初のクエストでは出ませんが、後のクエストで登場する .format はよく使われます。

print('現在の在庫:{:d}本'.format(stock))

print関数で表示

また、print関数に3つ値を渡しても表示できます。

print('現在の在庫:', stock, '本')

この場合、引数に渡した値の間にはスペースが入って表示されます。

pyq.jp