print() / input() / repr()
| 対応: | Python 3.0(2008) |
|---|
コンソールへの出力、ユーザーからの入力受け取り、オブジェクトの文字列表現取得を行う基本的な組み込み関数です。
構文
# 値をコンソールに出力する print(値1, 値2, ..., sep=' ', end='\n', file=sys.stdout) # ユーザーからキーボード入力を受け取る(戻り値は常に文字列) input(プロンプト文字列) # オブジェクトの「公式な」文字列表現を返す repr(オブジェクト) # 書式を指定して文字列にフォーマットする format(値, 書式指定子)
関数一覧
| 関数 | 概要 |
|---|---|
| print(*objects, sep, end, file) | 引数を文字列に変換してコンソールに出力します。複数の値はスペース区切りで出力され、末尾に改行が入ります。 |
| input(prompt) | プロンプトを表示してユーザーの入力を待ち、入力された文字列を返します。 |
| repr(obj) | オブジェクトの公式な文字列表現を返します。文字列ならクォートが含まれ、eval() で元のオブジェクトを再現できる形式を目指します。 |
| format(value, format_spec) | 値を書式指定子に従ってフォーマットした文字列を返します。 |
サンプルコード
print_input_repr_1.py
name = "桐生一馬"
age = 37
print("名前:", name, "年齢:", age)
print(2026, 3, 5, sep="-")
print("ローディング中", end="...")
print("完了!")
実行すると次のように出力されます。
python3 print_input_repr_1.py 名前: 桐生一馬 年齢: 37 2026-3-5 ローディング中...完了!
print_input_repr_2.py
num_str = input("数値を入力: ")
num = int(num_str)
print("入力値:", num)
print("2倍:", num * 2)
実行すると次のように出力されます。
python3 print_input_repr_2.py 数値を入力: 42 入力値: 42 2倍: 84
print_input_repr_3.py
s = "hello\nworld" print(s) print(repr(s)) data = [1, "two", 3.0, None] print(repr(data)) pi = 3.14159265 print(format(pi, ".2f")) print(format(1000000, ",")) print(format(42, "08d")) print(format(255, "x"))
実行すると次のように出力されます。
python3 print_input_repr_3.py hello world 'hello\nworld' [1, 'two', 3.0, None] 3.14 1,000,000 00000042 ff
よくあるミス
よくあるミス1: input()の戻り値をそのまま数値として使う
『input()』の戻り値は常に文字列(str型)です。数値として計算に使いたい場合は必ず『int()』や『float()』で型変換してください。変換できない入力が来た場合は『ValueError』が発生します。
mistake1_ng.py
num = input("数値を入力: ")
result = num + 10
print(result)
実行すると次のように出力されます。
python3 mistake1_ng.py 数値を入力: 5 TypeError: can only concatenate str (not "int") to str
mistake1_ok.py
num = int(input("数値を入力: "))
result = num + 10
print(result)
実行すると次のように出力されます。
python3 mistake1_ok.py 数値を入力: 5 15
よくあるミス2: print()でオブジェクトの内容が見えない
文字列に埋め込まれた改行やタブなどのエスケープシーケンスは、『print()』だと実際に改行・タブとして表示されるため、内容の確認が難しくなります。デバッグ時は『repr()』を使うと、エスケープシーケンスがそのまま見えて便利です。
mistake2_ng.py
s = "line1\nline2\ttabbed" print(s)
実行すると次のように出力されます。
python3 mistake2_ng.py line1 line2 tabbed
mistake2_ok.py
s = "line1\nline2\ttabbed" print(repr(s))
実行すると次のように出力されます。
python3 mistake2_ok.py 'line1\nline2\ttabbed'
概要
『print()』はPythonで最もよく使われる出力関数です。内部では各引数に『str()』を呼び出して文字列に変換してから出力します。ファイルへの出力には引数『file』にファイルオブジェクトを指定します(例:『file=sys.stderr』でエラー出力に書き込めます)。
『input()』の戻り値は常に文字列(str型)です。数値として使いたい場合は必ず『int()』や『float()』で型変換してください。変換できない入力が来た場合は『ValueError』が発生するため、実用的なプログラムでは try-except で例外処理を行います。
『repr()』と『str()』の違いは用途にあります。『str()』は人間が読みやすい形式、『repr()』は開発者向けの形式(デバッグに適した詳細な表現)を返します。独自クラスでは『__repr__()』メソッドを実装することで挙動をカスタマイズできます。文字列フォーマットの詳細については『str.format() / f文字列』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。