Python の環境設定と基本
Back to index page
Python プログラミングを始める前に以下の基礎的な環境を確認しておきましょう.
Python のプログラミングを行うためにはプログラムを記述する何らかのエディタが必要で,例えば Windows に標準で備わっているメモ帳でも可能です.ただ,インストールした環境には統合開発環境としての IDLE が入っていますので,今回はそれを使用していきましょう.
インストール直後であれば Windows キーをクリックして出てくる IDLE のアイコンをクリックして簡単に起動できますが,しばらく経つと見えなくなりますので,その場合には検索ウィンドウに IDLE と入力して Enter キーで確定させると IDLE が起動します.
次からは IDLE と打つとメニューに IDLE が出てくるはずです.
古今東西最初のプログラムは画面に Hello, world! と表示させるものと決まっています.このプロセスを省略して何かに祟られるとまずいので,今回もまずはそこからやってみましょう.

上の IDLE の画面で File メニューから新規作成の New FIle を選択します.すると下に示すプログラムエディタが起動します.

インストールした直後であればウィンドウの左端の行番号は表示されないはずですが,行番号についてはこの後設定を行います.
早速,以下の1行を入力しましょう.
print('Hello, world!')
|
実際に入力すると,下図のように文字が色分けされて表示されます.紫色はあらかじめ用意されている関数で,緑は文字列です.

次にこのプログラムを保存しましょう.ここでちょっと注意が必要です.IDLEで新しくファイルを開いてプログラミング作業を行った場合,保存する際にデフォルトで表示されるフォルダは Python の本体が入っているフォルダになっています.そこにそのまま保存すると後々ファイルの保存場所がわからずに苦労することになるので,ちゃんと授業用のフォルダを用意してそちらに保存してください.

保存が完了したらプログラムを実行してみましょう.Run メニューから Run Module を選ぶと先ほどの IDLE の画面(これをシェルと言います)上に実行結果が表示されます.

Python をインストールした状態では保存したプログラム(例えば hoge.py)をダブルクリックすると,IDLEを開くのではなく,プログラムを実行するという仕様になっています.ソース本体をダブルクリックして IDLE で開くためには設定が必要です.
適当に何かのフォルダを開いてそのウィンドウの「表示」メニューから一番下の「表示」をクリックして,新たに開くメニューから「隠しファイル」にチェックを入れて,全てのファイルが見えるようにしてください.

拡張子が .py のファイルを右クリックして出てくるコンテクストメニューから「プログラムから開く」を選択します.

次に,開いたメニューの一番下にある「別のプログラムを選択」を選びます.

「アプリを選択して .py を開く」といウィンドウが出てくるので,スクロールして一番下にある「PCでアプリを選択する」を選びます.

プログラムを選択するためのフォルダが表示されるので,一度 Windows(C:) に戻ってから,以下の順に選択していきます.
ユーザー > (自分の名前のフォルダ) > AppData > Local > Programs > > Python > Python312 > Lib > idlelib
そして,idle (idle.bat) を選択(開く)します.

元のウィンドウに戻るので,そこで「常に使う」を選択して完了です.
先ほど保存した Hello, world! を表示するプログラムをダブルクリックで開いてみましょう.無事に開けることを確認したら,次に行番号表示の設定を行います.
プログラムを作成して実行してみるとエラーとなる場合がよくあります.その際にエラーメッセージを IDLE のシェルに表示してくれるのですが,その時にはエラーが生じた原因が何行目にあるのかも教えてくれます.そのため,エディタで行番号を表示させることは必須と言っても過言ではありません.以下を参考に行番号を表示させる設定を行ってください.
Options メニューから Show Line Numbers を選択するだけです.

図1 行番号表示の設定

図2 5行目の print の中で文字列を ' で閉じるのを忘れている場合

図3 5行目の print の中の f 文字列で指定している変数 number は定義されていない場合
先ほどの Hello, world! 表示プログラムですが,以下のような構成になっています.

なお,ここで文字列とは1文字以上の文字で構成されるオブジェクトで,上の例では Hello, world! の13文字が一つのオブジェクトとして扱われます.
プログラムではさまざまオブジェクトを扱います.それらの値を必要な時にいつでも参照できるように入れ物に入れておきます.その入れ物の一つが変数です.変数には数値,文字列,ブール値などがあります.
num1 = 123 num2 = 456 strg1 = '123' strg2 = '456' print(num1 + num2) print(strg1 + strg2) |
|
変数名に使用できる文字としては,アルファベットの大文字と小文字,数字,下線があり,アルファベットの大文字と小文字は区別されます.数字から始めることはできません.また,先頭は小文字で始めるのが慣例です.
以下の単語は予約語としてプログラムの中で意味を持っているので,変数名には使用しないようにしましょう.また,エディタで入力しているときに自分でつけた変数名の文字の色が紫やオレンジなどになっていたらそれは何らかの意味を持つ関数やメソッドなので,使用しない方が良いでしょう.

num = 1 #文 num + 1 #式 |
上の文は代入文といい,変数 num に数値 1 を代入するもので代入文と言います.代入を行う記号は = で,代入演算子と呼ぶこともあるのですが,演算子ではありません.
Python には以下のような独特な代入の書き方があり,一括代入と呼ばれています.
| num1 = num2 = 1 | 変数 num1 と num2 の両方に 1 が代入される | |
| num1, num2 = 1 | 変数 num1 に 1 が, num2 に 2 が代入される | |
num1, num2 = 1, 2 | 2行目の代入で,変数 num2 の値が num1 に,num1 の値が num2 に同時に代入され, 値が入れ替わる |
| 演算子 | 演算 | 動作例 |
|---|---|---|
| + | 加算(足し算) | 3 + 5 → 8 |
| - | 減算(引き算) | 3 - 5 → -2 |
| * | 乗算(掛け算) | 3 * 5 → 15 |
| // | 除算(割り算,整数型) | 3 // 5 → 0 |
| / | 除算(割り算,実数型) | 3 / 5 → 0.6 |
| % | 剰余算(あまり) | 3 % 5 → 3 |
変数への単純な代入ではなく,変数の値を例えば 2 増やしたいとき,以下の式が使えます.
num = num + 2 |
数学的にはおかしな式に見えますが,プログラミングにおいて = は等号ではなく,代入なので問題ありません.変数 num に 2 加えたものを新たに num に代入するという流れですが,結局変数 num の値を 2 増やすという動作になります.
このような変数の値の変更は使用頻度が非常に高いので,専用の複合演算子(累算代入演算子)も用意されていて,以下のように書くのが通例です.
num += 2 |
すべての四則演算の演算子にこの複合演算子は用意されています.
| 記号 | 意味 | 動作例 a = 5 の場合 |
|---|---|---|
| += | 左辺の変数の値を右辺の値だけ増やす | a += 5 → a の値は 10 |
| -= | 左辺の変数の値を右辺の値だけ減らす | a -= 2 → a の値は 3 |
| *= | 左辺の変数の値を右辺の値倍する | a *= 3 → a の値は 15 |
| /= | 左辺の変数の値を右辺の値分の 1 にする(実数) | a /= 4 → a の値は 1.25 |
| //= | 左辺の変数の値を右辺の値分の 1 にする(整数) | a //= 4 → a の値は 1 |
| %= | 左辺の変数の値を右辺の値で割った余りにする | a %= 2 → a の値は 1 |
変数などの値をプログラムの中に書いておくのではなく,実行させるときにその都度値を入れたい場合には input 関数を用います.
name = input('Your name: ')
print(name)
| ![]() |
実行すると上の右のように IDLE の画面が入力を促す状態になります.名前を打ち込んで Enter キーを押すと,下のように結果が表示されます.

input 関数で入力された値は数値を入れても文字列として取り込まれます.そのため,プログラム中で数値として計算に使用するためには,型を変換する必要があります.
num1 = input('num1 = ')
num2 = input('num2 = ')
print(num1 + num2)
| ![]() |
文字列(str 型)から整数の数値(int 型)に変換するためには以下のように int 関数を使用します.じっすであれば float 関数です.
num1 = int(input('num1 = '))
num2 = int(input('num2 = '))
print(num1 + num2)
| ![]() |
ここまで print 関数を用いて値を画面に出力することを行ってきました.説明文などの中に変数の値を入れ込んで表示させる場合が多くありますので,その際に使用する f 文字列についても学習しておきましょう.
num1 = int(input('num1 = '))
num2 = int(input('num2 = '))
print(f'Sum of {num1} and {num2} equals to {num1 + num2}.')
|
![]() |
f 文字列の規則
数値などの値をある幅(桁数)で表示したい場合には,以下の例にように { } の中にコロン : を入れて,その右側に書式指定子と呼ばれる記号や数値を入れることで実現できます.
num1 = int(input('A number with 3 digits: '))
num2 = int(input('A number with 7 digits: '))
print(f'{num1:8}')
print(f'{num2:8}')
|
![]() |
数値はデフォルトで右寄せになります.文字列は左寄せです.
左揃えや中揃えにしたい場合には記号の < や ^ を使用します.
num1 = int(input('A number with 3 digits: '))
num2 = int(input('A number with 7 digits: '))
print(f'{num1:<8}')
print(f'{num2:<8}')
print(f'{num1:^8}')
print(f'{num2:^8}')
|
![]() |
小数点以下の桁数の指定も可能です.
num1 = int(input('A number with 3 digits: '))
num2 = int(input('A number with 7 digits: '))
print(f'{num2} / {num1} = {num2 / num1}')
print(f'{num2} / {num1} = {num2 / num1:.2f}')
|
![]() |
空行の挿入や改行しない出力も必要になる場合があります.他の言語と異なり,Python では print 関数で出力した文字列は最後に改行を含んでいます.そのため,改行せずにそのまま続けて同じ行に出力したい場合には文字列の最後に改行を入れないように指定しないといけません.文字列の末尾 end の書式を指定します.
num1 = int(input('A number with 3 digits: '))
num2 = int(input('A number with 7 digits: '))
print(f'{num1:8}')
print() # 空行
print(f'{num2:8}')
print() # 空行
print(f'{num1:8}', end = '')
print(f'{num2:8}')
|
![]() |
プログラムの進行は単純な一直線の経路ではありません.状況に応じて処理を変えることが多々あります.また,同じような処理を必要な回数繰り返すこともあります.そのように状況に応じて流れを変えるための装置として制御構造があります.そして制御構造には条件分岐と反復処理があります.
条件分岐のプログラムを学習するために,まずは乱数を学習します.乱数とは一見ランダムに見える数値を発生させる仕組みで,全てのプログラミング言語(EXCELにも)に用意してあります.
Python ではいくつかの乱数が用意されており,今回は基本的には整数の乱数を扱うことにします.
ほとんどのプログラミング言語では豊富な機能を実現するために,それを必要とするときだけ呼び出して使用する方式を取っています.そうしないとその言語本体のプログラムが肥大化して動作が重くなることと,中身を見るときの見通しが悪くなるからです.
Python であらかじめ用意されている乱数に関する関数(ビルトイン関数)は random というモジュール(部品)の中に用意されています.そのため,乱数を使用するときには,呼び出す前にそのモジュールを読み込んでおく必要があります.通常はプログラムの先頭で必要なモジュールの読み込みを一度に行う方法が取られます.
以下に2桁の正の整数のどれかをランダムに発生させるプログラムの例を挙げます.
import random num = random.randint(10, 99) print(num) |

実行すると以下のような結果表示となります.

まず,モジュールの読み込みですが,import というメソッド(方法)を使用します.IDLE のエディタ画面では文字の色がオレンジ色になっていますので,意味を持っている文字列であることがわかります.
次に3行目ですが,ここで num という名前の変数に乱数を代入しています.整数の乱数を発生させる関数は randint を使用しています.カッコの中に発生条件を指定していますが,このようにプログラミング言語において関数は名前の後に ( ) が来ます.数学のように { } や [ ] を使い分けることはありません.(というか,{ } や [ ] は別の意味を持っています.)カッコの中に書く情報を引数(ひきすう)と言います.関数 randint の引数は発生させる最小の数と最大の数を指定します.今回は2桁の正の整数なので,10から99までのどれかということです.そして,関数名の前に random というモジュール名をつけています.これをつけないとどのモジュールにある関数かがわからないので,このようにわざわざ指定します.
ここで,注意です.乱数を扱うプログラム(random モジュールを imort するプログラム)は,保存するときに決して random.py という名前で保存してはいけません.Python のライブラリ(いろいろなモジュールが保存されている場所)にある random.py を import するようプログラムの先頭で指示していますが,読み出す場合の優先順位があり,最初にまず今いるディレクトリ(カレントディレクトリ,要は自分のプログラムがあるフォルダ)が検索され,そこになかったらライブラリを見に行くということになっていますので,自分のフォルダに random.py という名前のプログラムがあればそれ(自分自身)を import することになり,エラーとなります.
最後の4行目は画面に文字列を表示させる関数 print を使用して,画面に変数 num の値を表示させています.ここまでの流れは理解できたでしょうか?
モジュールにある関数を呼び出す際に,毎回モジュール名をつけるのは面倒なので,省略する方法も用意されています.それは import 文をちょっと変更して行います.
from random import randint num = randint(10, 99) print(num) |

Python には条件分岐として if 文と match 文の2種類が用意されていますが,今回は基本的には if 文を使用します.名前の通りもし~ならばという条件設定を用意するものになっています.
if とコロン : で囲まれた式(判別式)を評価そて.その結果が真(True)であれば,コロンの後に置かれている文を実行します.
from random import randint
num = randint(10, 99)
print(f'A random number with 2 digits: {num}')
if num % 2 == 0:
print('Even number')
|

以下に比較演算子の一覧を載せておきます.
| x < y | x が y より小さければ真(True)を,そうでなければ偽(Flase)を生成 |
| x > y | x が y より大きければ真(True)を,そうでなければ偽(Flase)を生成 |
| x <= y | x が y より小さいか等しければ真(True)を,そうでなければ偽(Flase)を生成 |
| x >= y | x が y より大きいか等しければ真(True)を,そうでなければ偽(Flase)を生成 |
| x == y | x と y が等しければ真(True)を,そうでなければ偽(Flase)を生成 |
| x != y | x と y が等しくなければ真(True)を,そうでなければ偽(Flase)を生成 |
注意が必要な間違い例:
=< = > のような順番が逆
< = > = のような間に空白文字(スペース)が入る
Python では if 文の中の実行の実態の文(スイート)をインデントで示しますので,インデントが間違っているとエラーになります.
from random import randint
num = randint(-1, 1)
print(f'A random number: {num}')
if num > 0:
print('Positive')
|
from random import randint
num = randint(-1, 1)
print(f'A random number: {num}')
if num > 0:
print('Positive')
|
右のプログラムはインデントが正しくないので実行しようとするとエラーが表示されます.

他にも以下のような場合に間違った動作やエラーになります.
from random import randint
num = randint(-1, 1)
print(f'A random number: {num}')
if num > 0:
print('Positive')
print('Not negative')
|
from random import randint
num = randint(-1, 1)
print(f'A random number: {num}')
if num > 0:
print('Positive')
print('Not negative')
|
|
| 最後の print 文は必ず実行される | 不揃いなインデントによるエラー発生 |
ブール型の定数ですが,文字で表現されているものの値も持っています.以下のプログラムで確認できますので,実際に試してみましょう.
print(int(True)) print(int(False)) |
もし~なら文1を実行し,そうでなければ文2を実行する,というような処理を行いたい場合には else 節を利用して実現できます.先ほどの偶数かどうかの判定プログラムに奇数の場合の表示を追加してみましょう.
from random import randint
num = randint(10, 99)
print(f'A random number with 2 digits: {num}')
if num % 2 == 0:
print('Even number')
else:
print('Odd number')
|
上の例を以下のように if だけで書くことはお勧めしません.整数は偶数か奇数かどちらかしか無いので,必ずどちらかになるようにするために else 節を使用するべきです.
from random import randint
num = randint(10, 99)
print(f'A random number with 2 digits: {num}')
if num % 2 == 0:
print('Even number')
if num % 2 != 0:
print('Odd number')
|
選択肢が複数あっても,必ずどれかの場合に合致して処理をする場合には else 節を使用する
複雑な場合分け処理になると,うっかり条件が抜けてしまったりすることもあるので,必ず何かの処理を行うようにするための保険みたいなもの
場合分けの数が増えてくると,~ならば,~では無いけれど~~ならば,のような処理が必要になってきます.その際には elif 節を使用します.
例えば,乱数でじゃんけんの手を表示させる場合だと,以下のようになります.
from random import randint
hand = randint(0, 2)
if hand == 0:
print('Gu')
elif hand == 1:
print('Choki')
else:
print('Pa')
|