こんにちは!ゆーや(@yuyamanm118712)です。
こちらのページでは完全独学でWebプログラマとなった私が
「print関数」に関して必要な情報をまとめています。
分量は多いですが、特に難しい内容はありませんので、
最後までじっくりと読んで、一緒に学習にしていきましょう。
なお、ご指摘・ご質問はTwitter(@yuyamanm118712)のDMまでよろしくお願いします。
print関数とは
print関数とは、主にコンソールや標準出力に文字列や数値を表示するために使用する関数です。
また、作成したソースコードが意図した通り動作しているか確認(デバック)の用途でも使用できるため、シンプルですが、非常に重要な関数になります。
文字列の出力
出力と結合
print関数で文字列を出力するには、例のように入力すれば表示できます。
「‘(シングルクォート)」「“(ダブルクォート)」などはどちらでも問題ありません。
またprint関数の中での文字列の結合(+)も可能です。
実装例
print('hello!')
# hello!
print("ゆーや")
# ゆーや
print('hello' + ',' + 'ゆーや!')
# hello,ゆーや!
数値の出力
出力と結合
print関数で数値を出力する際も文字列と同様そのまま表示できますが、結合はやや注意です。
単純に文字列のように数値同士を”+”で結合すると、
足し算だと認識して、計算されてしまいます。
(逆に言ったら、print内でも四則演算が可能。)
もし、数値同士を結合(100 + 200 → 100200)としたい場合、
- 「’」や「”」で囲むことで文字列とする
- str関数を用いて、数値を文字列に変更する
などの工夫が必要です。
実装例①
print(100)
# 100
print(100 + 200) # 足し算として認識する
# 300
print(100 * 200) # 四則演算ができる
# 20000
print('100' + '200') # 文字列として入力する
# 100200
print(str(100) + str(200)) # str関数で数値→文字列に変換する
# 100200
出力する数値が小数の場合
もう1点注意があるとすれば、print関数で表示したい数値が小数の場合です。
1.0000のような小数の場合、切り捨てられてしまうというずれがありますので、そのまま表示したい場合などはシングルクォートで囲むなど用途に合わせて使いましょう。(str関数も切り捨てます。)
実装例②
print(1.00005)
# 1.00005
print(1.0000) # 切り捨てられてしまう
# 1.0
print(str(1.0000)) # str関数でも切り捨てられてしまう
# 1.0
print('1.0000') # シングルクォートで回避できる
# 1.0000
リストの出力
出力
print関数で[1, 2, 3]のようなリストを出力する場合、そのまま、例のように表示されます。
全要素出力(「*(アスタリスク)」)
また、少し特殊ですが、リストの前に「*(アスタリスク)」を付けてprint関数に渡すと
各要素が空白区切りで出力されます。
各要素を取り出して出力
各要素を取り出したい場合は
[1, 2, 3][0]
のようにリストの後ろに [(取り出したい要素の番号)] を付けることで取り出せます。
実装例
print([1, 2, 3])
# [1, 2, 3]
print(["あ", "い", "う"]) # 文字列のリストも同様だが、シングルクォートになっていることに注意!
# ['あ', 'い', 'う']
print(*[1, 2, 3]) # リストの前に*を付けると要素を半角スペース区切りで表示!
# 1 2 3
print([1, 2, 3][0])
# 1
print(["あ", "い", "う"][2]) # 文字列のリストも同様
# う
タプルの出力
出力
print関数で(1, 2, 3)のようなタプルを出力する場合も、リストと同様。
全要素出力(「*(アスタリスク)」)
リストと同様ですが、タプルの前に「*(アスタリスク)」を付けてprint関数に渡すと
各要素が空白区切りで出力されます。
各要素を取り出して出力
各要素を取り出したい場合は
(1, 2, 3)[0]
のようにタプルの後ろに [(取り出したい要素の番号)] を付けることで取り出せます。
実装例
print((1, 2, 3))
# (1, 2, 3)
print(("あ", "い", "う")) # 文字列のタプルも同様だが、シングルクォートになっていることに注意!
# ('あ', 'い', 'う')
print((1, 2, 3)[1])
# 2
print(("あ", "い", "う")[0])
# あ
辞書の出力
出力
print関数で{“a”: 1, “b”: 2, “c”: 3}のような辞書を出力する場合も、リスト、タプルと同様そのまま表示されます。
全要素のキーのみ出力(「*(アスタリスク)」)
リスト、タプルと同様に辞書の前に「*(アスタリスク)」を付けてprint関数に渡すと
各要素のキーが空白区切りで出力されます。
少しリストやタプルと違うので注意が必要です。
各要素を取り出して出力
各要素を取り出したい場合は
{“a”: 1, “b”: 2, “c”: 3}[“a”]
のように辞書の後ろに [(取り出したい要素のキー)] を付けることで取り出せます。
実装例
# 出力
print({"a": 1, "b": 2, "c": 3}) # シングルクォートになっていることに注意!
# {'a': 1, 'b': 2, 'c': 3}
# 全要素のキーのみ出力(「*(アスタリスク)」)
print(*{"a": 1, "b": 2, "c": 3}) # key値が半角スペース区切りで出力される
# a b c
# 各要素を取り出して出力
print({"a": 1, "b": 2, "c": 3}["a"])
# 1
変数の出力
出力
ここまでは文字列・数値・リスト・タプル・辞書をprint関数に直接渡しています。
それらを変数に代入した場合でも同じ出力結果になるので例で確認していきます。
実装例①
a = 'ゆーやです。' # 文字列
print(a)
# ゆーやです。
b = 100 # 数値
print(b)
# 100
c = ["A", "B", "C", "D"] # リスト
print(c)
# ['A', 'B', 'C', 'D']
print(c[3]) # 要素の取り出し
# D
d = ("A", "B", "C", "D") # タプル
print(d)
# ('A', 'B', 'C', 'D')
print(d[2]) # 要素の取り出し
# C
e = {"key1": "value1", "key2": "value2", "key3": "value3"} # 辞書
print(e)
# {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
print(e["key2"]) # 要素の取り出し
# value2
別のデータ型同士の結合(文字列+数値)
print関数で’ABC’などの文字列と123のような数値を結合して「ABC123」と表示したい場合、単純に「+」で結合すると下記のエラーになります。
print('ABC' + 123) #下記のようにエラーになる。
# TypeError: can only concatenate str (not "int") to str
# str型(=文字列)にはstr型を結合できます(int型(=数値)は結合できません)
そこで数値を文字列に変更するstr関数を使用します。
なお、数値が整数でも小数でも問題ありません
print('ABC' + str(123)) #str関数で整数を文字列に
# ABC123
print('ABC' + str(0.11111)) #str関数で小数を文字列に
# ABC0.11111
改行させずに出力(引数end)
引数endを使用して出力
print文を複数行記述して実行すると、自動的に改行されます。
print('A')
print('B')
print('C')
# A
# B
# C
これはprint関数が持つ引数「end」が関係しています。
endはprintに渡した引数の末尾に何を付けるかを設定できます。
書き方は
print(表示したい文字・数値、 end = ‘末尾につけたいもの’)
です。
なお、endの値はデフォルトで「改行」が設定してあるため、printは自動で改行されます。
実装例
print('A', end = '@')
print('B', end = '@')
print('C', end = '@')
# A@B@C@ # endを「@」で上書きしているので改行されない。
複数の値を結合して出力(引数sepで区切り文字指定)
引数sepを使用して出力
print関数では複数の文字列や変数、数値などをカンマ区切りで指定すると、スペースで結合してくれる機能を持っています。
a = 'こんにちは'
print(a,100,'円頂戴') # 半角スペースで結合
# こんにちは 100 円頂戴
これはprint関数の持つ引数「sep」によるものです。
endと同じように記述することで複数の値を結合する際の区切り文字を制定することができます。
なお、デフォルトは sep = ‘ ‘(半角スペース)のため、sepを指定しないと、上記のように半角スペースで結合してくれます。
実装例
print(a,100,'円頂戴', sep = '\n') # 改行文字\nを指定すると改行してくれる
# こんにちは
# 100
# 円頂戴
print(a,100,'円頂戴', sep = '') # 空文字を指定するとただ結合してくれる
# こんにちは100円頂戴
print(a,100,'円頂戴', sep = '@') # 文字を指定するとその文字で結合してくれる
# こんにちは@100@円頂戴
リスト・タプル・辞書の「*」とsepを組み合わせる
sepを使って少し便利な小技を紹介します。
このページでも紹介した「*」とsepを組み合わせれば、簡単にリストやタプル、辞書の中身を展開・結合できます。
実装例
# リスト・タプル・辞書の「*」とsepを組み合わせる
# リスト
x = [2023, '09', 24] # 年、月、日をまとめたリスト
print(*x, sep='-') # 簡単に日付の形に
# 2023-09-24
# タプル
y = ('python-dokugaku', 'test.co.jp') # メールアドレスの前後をまとめたタプル
print(*y, sep='@') # 簡単にメールアドレスの形に
# python-dokugaku@test.co.jp
# 辞書
z = {'a': 1, 'b':2}
print(*z, sep=',') # 簡単にキーの一覧をcsv化
# a,b
文字列を整形して出力
format関数を用いた方法
※近日、記事UP予定
f文字列(フォーマット文字列)を用いた方法
※近日、記事UP予定
%(パーセント)を用いた方法
※近日、記事UP予定
コメント