Python入門 - インタラクティブモード(対話モード)を利用して気軽にPythonを実行しよう

作成日:   更新日:

本ページではPythonの入門コンテンツとして初学者向けにPythonを利用したプログラムを気軽に試すためにどのような機能が提供されているのかを説明します。

Pythonをもっと気軽に実行する方法#

Python入門 - Pythonファイルの書き方と実行方法を理解しよう ではPythonスクリプトファイルを作成し、コマンドラインから実行することでPythonプログラムを起動することができました。

しかし、Pythonはより気軽にコマンドを試す環境が準備されているのです。本ページではそれらについて解説します。

Pythonの対話モード(インタラクティブモード)#

python コマンドはPythonスクリプトを実行するだけでなく、「対話モード」(interactive mode)で起動することができます。

対話モードとはどういう意味かというと、こちらが打ち込んだコマンドに対してPythonが応答を返してくれる、いわば対話をしていくような形でPythonコマンドを実行できるモードです。

実際に使ってみるとよく意味が分かるかと思います。

すでに Pythonをインストールせずに試してみる方法(Google Colab) - 勉強を始める前のお試しとして で Google Colab を試された場合、それに近しいものだと思っていただければOKです。

対話モードを使ってみる#

対話モードの起動#

それでは実際に対話モードを利用していきます。

なんの難しいこともなく、単に python とコマンドを打ち込むだけです。

python と打ち込むことで下記のような画面が表示されるかと思います。

/images/python/tutorial/python-interactive-mode1.webp

ターミナル上で python を実行した際の画面例。Windowsの例です。

書き起こすと、次のような出力がされています。

Python 3.10.7 (tags/v3.10.7:6cc6b13, Sep  5 2022, 14:08:36) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

1行目は起動したPythonの細かいバージョン情報と、起動しているシステムの情報が出力されています。ここはあまり気にしないでOKです。

2行目には help , copyright , credits および license というコマンドについて触れています。 help はその名の通り何かしらのコマンドを調べたい場合に利用するコマンドで、利用することがあるかと思います。それ以外のコマンドは著作権の情報やクレジット(映画のクレジットと同じ意味)、ライセンスの情報が確認できるコマンドです。興味がある場合は調べてみてください。

そして、大事なのが3行目です。 >>> と何やら矢印のようなものが出ています。これが プライマリプロンプト (primary prompt; 1次プロンプトとも)[1] と呼ばれるもので、これは「入力まち」の記号になります。つまり 「何か入力してください」というマークです。

このプロンプトが表示されている間は自由に入力をすることができます。ここで実行したいPythonの命令を記述して、Enterを押下することで実行することができます。

対話モードを試してみる#

それでは対話モードを試してみましょう。ここではあまりコードの内容は説明しませんので、コピーして実行してみてください。

文字列の表示#

文字を表示してみます。

print('文字列の表示')

上記コードをコピーしてEnterを押下してみると、 文字列の表示 と出力がされます。

簡単な計算の実施#

簡単な計算をしてみます。

123 * 123

上記コードで 15129 が表示されます。

2 ** 10

上記コードで 1024 が表示されます。 ** はべき乗を意味します。つまり 2の10乗を計算しています。

1023 % 10

上記コードで 3 が表示されます。 % は剰余計算、つまり割り算の余りを計算するもので、 1023 を 10 で割った際の余りを計算しています。

hex(65535)

上記コードで '0xFFFF' が表示されます。 これは与えられた数値を16進数で表示するコードです。

このように、Pythonの対話モードは電卓として利用することができます。

「いや普通に電卓使った方がいいでしょう」と思われるかもしれませんが、意外にも活躍します。通常の電卓と違い、計算した履歴が残るのと、Pythonのいろんな機能を利用できるため。

関数を書いてみる#

対話モードでは1行しか書くことができないのか?と思ってしまいますが、複数行のコードを記述することも可能です。

def test_func(value):
    print(f'This is the "test_func"')
    if value == 0:
        print('value is 0')
    else:
        print('value is not 0')

入力後、エンターが数回必要かもしれません。

このコードをコピーして貼り付けるとPythonの表示が以下のようになります。

>>> def test_func(value):
...     print(f'This is the "test_func"')
...     if value == 0:
...         print('value is 0')
...     else:
...         print('value is not 0')

2行目以降で >>> の表示が ... に変わっていることにお気づきでしょうか。これはセカンダリプロンプト (secondary prompt) と呼ばれ、まだPythonが続きの入力を必要としている時に表示されます。

関数の定義が def という単語で始まっているのですが、その終わりに到達していないのでPython側が「続きを入力してください」と言っている状態です。

関数の定義については別途解説しますので、現時点ではこういう表示もあるんだ、という程度でOKです。

関数を実行するには、以下のように入力します。

test_func(0)

カッコの中に入れる数を変化させると出力内容も変化します。単に与えられた値が 0 なのかどうかを判定しているだけです。

GUIを作ってみる#

これだけだとあまりにも味気ないので、何か視覚的に面白いものを作ってみます。

ちょっと長いですが、下記をまるっとコピーして貼り付けるとGUIが動作するはずです。 Windows 10 / Python 3.10.7 にて動作確認しています。

from tkinter import *
from tkinter import ttk
import random

class Ball:
    def __init__(self, x, y, r, vx, vy):
        self.x = x
        self.y = y
        self.r = r
        self.vx =vx
        self.vy = vy
        r = random.randrange(100, 255)
        g = random.randrange(100, 255)
        b = random.randrange(100, 255)
        self.color = f'#{hex(r)[2:]}{hex(g)[2:]}{hex(b)[2:]}'
        return
    def draw(self, canvas):
        self.drawing = canvas.create_oval(
            self.x-self.r, self.y-self.r,
            self.x+self.r, self.y+self.r,
            fill=self.color)
    def move(self, canvas):
        x1, y1, x2, y2 = canvas.coords(self.drawing)
        self.x = x1 + self.r
        self.y = y1 + self.r
        width = canvas.winfo_width()
        height = canvas.winfo_height()
        if ((self.x + self.vx >= width) or
            (self.x + self.vx <= 0)):
            self.vx *= -1
        if ((self.y + self.vy >= height) or
            (self.y + self.vy <= 0)):
            self.vy *= -1

balls = []
for i in range(10):
    balls.append(
        Ball(random.randrange(10, 20), random.randrange(10, 20),
             random.randrange(10, 20), random.randrange(10, 20),
             random.randrange(10, 20)))

def move_ball():
    for b in balls:
        b.move(canvas)
        canvas.move(b.drawing, b.vx, b.vy)
    canvas.after(20, move_ball)

root = Tk()
frm = ttk.Frame(root, padding=10)
frm.grid()
ttk.Label(frm, text="Bouncing Balls!").grid(column=0, row=0)
ttk.Button(frm, text="Quit", command=root.destroy).grid(column=1, row=0)
canvas = Canvas(root, bg="white",width=(400),height=(400))
canvas.grid(column=0, row=1)

for b in balls:
    b.draw(canvas)

move_ball()

root.mainloop()

面白いと思っていただけるかはわかりませんが、カラフルなボールがそこらじゅうを跳ねまわるGUIプログラムです。

対話モードの終了#

対話モードでの操作を終了する際には、 exit() と打ち込みます。

exit()

これは Python にもとから備わっているコマンドの1つで、Pythonを終了するコマンドです。

あるいは以下の方法でも終了が可能です。

Windowsの場合#

Ctrl+Z を押した後Enter。

この方が早いですね。

Linux / macOSの場合#

Ctrl+D で終了できます。連打するとターミナルそのものまで終了してしまうので、ご注意ください。

まとめ#

本ページでPythonをコマンドライン上から対話モードで立ち上げ、コマンドを試すことができるようになりました。これ以降のステップでも特にファイルの作成が明示されていない限りは今回紹介した対話モードの中で試すことが可能です。

この機能を活用してPythonの学習をより効率的なものにしていきましょう。

Python