Python/数値入力と文字入力と出力表示

出典: フリー教科書『ウィキブックス(Wikibooks)』
ナビゲーションに移動 検索に移動

入力[編集]

文字の入力[編集]

文字の入力は、input()で行います。inputは「インプット」と読みます。

print("文字を入力してみよう。")
x = input()

print(2 * x)

たとえば「a」と入力すると、「aa」が出力されます。

(実行例)
文字を入力してみよう。
a
aa

「fg」と入力すると、「fgfg」が出力されます。

なお、数字(「1」や「2」など)を入力しても、文字として認識されてしまい、たとえば上のプログラムの実行で「1」を入力すると、出力は「11」となります(文字「1」を2回つづけて並べます。)。


OSの文字コードの環境によって、上記コードのままだとpythonが日本語を認識せずにエラーで起動しない場合があるので、その場合はたとえば

# coding: shift-JIS

print("数値を入力してみよう。")
x = input()

print(2 * x)

のように、冒頭で文字コードを指定する。


なお、上とほぼ同じ内容のコードとして、

x = input("文字を入力してみよう :")
print(2 * x)

というふうに、input()のカッコ内に表示メッセージをまとめることもでます。

(実行例)
文字を入力してみよう :t
tt

数値の入力と計算[編集]

では、数字を入力させて、計算をさせたい場合、どうすればい良いのでしょうか?

次のようにします。

print("数字を整数で入力してみよう。2倍にするよ。")
x = input()
y = int(x)
print(2*y)

上記のコードを実行すると、数字の入力を求められますので、たとえば4と入力してエンターキーを押すと、「8」が表示されます。自動的に2倍にした数字(4と入力た場合は「8」)が表示されます。

int()により、入力された数字を整数に変換します。intとは、整数「integer」の略です。なお、integerはインテジャーと読みます。

「int」の読みは、「イント」と読むのが一般的だと思います。

上のプログラムで求められる入力に、「2.7」のような小数点の数を入れるとエラーになります。

小数点で表される数を入力したい場合は、float()関数を使います。

print("数字を入力してみよう。2倍にするよ。")
x = input()
y = float(x)
print(2*y)

上のプログラムで求められる入力に、「2.7」のような小数点の数を入れると、出力として「5.4」が表示されます。

floatとは、「浮動小数点」という意味です。floatは「フロート」と読みます。

変数と文字列を同時に表示したい場合[編集]

print("文字を入力してみよう。")
x = input()

print(x, "が入力されたよ。")


print関数の表示で、変数(上例の場合は、xが変数)と文字を一緒に表示したい場合は、たとえば上記のコードのように、「,」(カンマ)で区切って、一緒に表示することができます。


さきほどの数値の入力と計算プログラムを、この方法で、書き換えましょう。

print("数字を整数で入力してみよう。(入力値をyと表示します。) 2倍にするよ。")
x = input()
y = int(x)
print("2*", y, " = ", 2*y)

これを実行して、たとえば「5」と入力してエンターキーを押すと、出力として「2* 5 = 10」と表示されます。

テンプレート・リテラル[編集]

基本[編集]

引用符中に変数を書くことができ、その変数に値が代入された状態で出力する機能がある。

print(f"文字列")

のように、fを引用符の前につける事で利用できる。(なお「f」の由来はおそらく "format" だろう。もともと format メソッドという機能がpythonにあった。formatメソッドについては後述する。)

引用符は二重引用符でも一重引用符でも、どちらでも良い。(ただし、引用符の開始と終始における引用符の種類は統一すること。)

JavaScriptなど他の言語でいう「テンプレート・リテラル」に相当する機能である。

コード例
x = 123

print(f"数は{x} です")
出力結果
数は123 です


これは Pyhon3.6 からの導入という、比較的に新しい機能であるため、Python2系では利用できない可能性がある。


エスケープシーケンス[編集]

場合によってはテンプレートリテラルを使いつつも 「{ }」という文字列そのものを表示したい場合があります。

その場合、下記のように {{ }} と単に、波カッコを2重にすればいいだけです。


コード例
x = 123

print(f"文字列{{x}} には {x} が代入されます")
出力結果
文字列{x} には 123 が代入されます


なお、Pythonにかぎらず、上述の例のように、制御文字そのものを文字列として表示したりしたい場合のための記法のことを「エスケープシーケンス」とプログラミングの一般的な用語で言います。

※ 余談:

C言語とは違い、「\」や「/」などを入れても、pythonでは全然エスケープシーケンスとしては認識されないので、混同しないように。

経緯[編集]

  • formatメソッド

もともとPythonには、下記のようなformatメソッドという構文がPython2.7以降からあった。

x = 200

print('数は{y} です'.format(y=x) )
(※ 2020年でもpython3系のFedora32でも動く事を 2020年6月24日 に確認。)
出力結果
数は200 です


このほか、下記のような記法もある。

x = 333

print('数は %s です' % x )
(※ 2020年でもpython3系のFedora32でも動く事を 2020年6月24日 に確認。)
出力結果
数は333 です


なお、もしC言語のノリで print('数は %s です' , x ) などと書いても、pythonでは「数は %s です 333」と単に連結して表示してしまうだけなので、気をつけよう。

備考: フレームワークなどとの関係[編集]

Pythonでwebサーバなどを作れる「フレームワーク」の Flask(フラスク) や Django(ジャンゴ)には、 {{ }}のような二重の波カッコで上述のテンプレートリテラルと類似の機能を使える。

なので、あたかもPython自体の文法も {{ }}をテンプレートとしてサポートしているかのように錯覚しがちだが、しかしPython自体のテンプレートリテラルは一重の波カッコの { }である。

Python自体では、二重の波カッコは、エスケープシーケンスになってしまう。