PC-LABOを試すためのPython入門(第1回)~変数・型・print~【GitHub対応】

Python

このブログの構成について

このブログでは、「基本情報技術者試験問題に挑戦しよう!」シリーズをはじめ、Pythonの短いプログラムを動かしながら仕組みを確かめる記事を扱っている。

ただ、それらの記事に掲載のコードを理解するには、変数や関数、クラスといった最低限のPythonの知識が必要である。

このシリーズでは、Python初心者向けに「このブログのコードを読める・動かせるようになる」ことを目標に、Pythonの基礎を3回に分けて学んでいこう。

  • 第1回(今回):変数・型・print
  • 第2回:条件分岐・ループ・関数・辞書
  • 第3回:クラスと標準ライブラリの読み方

Pythonを一度もさわったことがない方は、まずPython本体をインストールしておいてほしい。
公式サイト からダウンロードできる。インストール後、ターミナル(またはコマンドプロンプト)でバージョンが表示されれば準備完了である。

Windows11でのインストール例

この記事ではPython 3.14.7をインストールする例として winget install Python.Python.3.14 を紹介している。公式推奨方法については、後述する公式ツールPython Install Managerも確認してほしい。

PS C:\Users\vin> winget install Python.Python.3.14
見つかりました Python 3.14 [Python.Python.3.14] バージョン 3.14.7
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://www.python.org/ftp/python/3.14.7/python-3.14.7-amd64.exe
  ██████████████████████████████  31.7 MB / 31.7 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました
PS C:\Users\vin> winget list Python
名前                   ID                 バージョン ソース
------------------------------------------------------------
Python Launcher        Python.Launcher    3.14.7     winget
Python 3.14.7 (64-bit) Python.Python.3.14 3.14.7     winget
PS C:\Users\vin>

※ Windows版については、従来のexe形式のインストーラーがPython 3.16以降で廃止されるとアナウンスされている(本記事執筆時点の最新安定版は3.14)。
今後は「Python install manager」という公式ツール(Microsoft StoreまたはWingetからインストール)に置き換わっていく予定なので、公式サイトの案内に従ってインストールしてほしい。

※ バージョン確認のコマンドはOSによって異なる点に注意したい。Mac/Linuxでは python3 --version でよいが、Windowsでは py --version を使うのが確実である。

Windowsでは、python --version や python3 --version と入力しても、バージョン番号が表示されず「Python」とだけ表示されることがある。これは、実際にインストールしたPythonではなく、Microsoft Storeへ誘導するためのダミーアプリ(アプリ実行エイリアス)が反応してしまうためで、”Store Stub Trap”などと呼ばれる、Windowsでよく知られたハマりどころである。

現在のWindows版Pythonでは、Python Install Managerが推奨されている。インストール後は python や py などのコマンドを利用できる。環境によってコマンドの動作が異なる場合があるため、まず python --version または py --version で確認するとよい。

なお、Pythonがインストールされているかどうかは、winget list Python でも確認できる。

今後インストール方法が変わっていく可能性もあるので、GitHub Codespacesを使う方法もおすすめしたい。GitHubアカウントがあれば、ブラウザ上でVSCode相当の環境がそのまま開き、Python3もあらかじめインストール済みなので、python3 --version を打つだけですぐに始められる。GitHubのリポジトリページで「Code」→「Codespaces」→「Create codespace on main」を選ぶだけでよい。

PowerShellでコードを動かすときの注意

ポイントは、py とだけ打たないこと。必ず py ファイル名.py のように、実行したいファイル名まで指定して実行することである。

手順は次の通り。

  1. メモ帳やVSCodeなどのエディタで、コードをそのまま貼り付けて保存する(例:variables_types_print.py)
  2. PowerShellで、そのファイルがあるフォルダに移動する(cd コマンドを使う)
  3. py variables_types_print.py のように、ファイル名まで指定して実行する
PS C:\python> py variables_types_print.py
3バイトの場合
値: 3
型: <class 'int'>
3バイトは24ビット
True
True
  5
00000101

=== バイト -> ビット ===
   1バイト ->     8ビット
   3バイト ->    24ビット
  10バイト ->    80ビット
 100バイト ->   800ビット

=== ビット -> バイト ===
   8ビット ->     1バイト
  20ビット ->     3バイト
  64ビット ->     8バイト
 100ビット ->    13バイト
PS C:\python>

これが、この記事とリポジトリのコードを実行する際の基本の形である。以降の記事でも、実行例は常にこの「py ファイル名.py で1つの完成したファイルを実行する」形を前提にする。

一方、ファイル名を指定せずに py とだけ入力してEnterを押すと、>>> という記号から始まる対話モード(REPL)が起動してしまう。ここに複数行のコード(関数定義やfor文など)をそのまま貼り付けると、インデント(字下げ)がずれてエラーになったり、入力の続きを促す ... というプロンプトのまま先に進めなくなったりすることがある。

もし誤って対話モードに入ってしまい、>>> や ... から抜け出せなくなった場合は、Ctrl+Cを押すと、その時点までの入力を取り消して、通常の入力状態に戻せる。対話モード自体を終了したい場合は、exit() と入力するか、Ctrl+Zを押してからEnterを押す。そのうえで、あらためて「py ファイル名.py」の形で実行し直してほしい。

なお、筆者の学習用リポジトリ pc-labo-python-basic には、記事内のコードをそのまままとめた完全版のファイルを置いているので、そちらをダウンロードして実行するのもよいだろう。

変数とデータ型

変数とは、値に名前をつけて、あとから使い回せるようにする仕組みである。Pythonでは、変数名 = 値 と書くだけで変数を作れる。

byte_count = 3          # int型(整数)
label = "3バイトの場合"   # str型(文字列)
is_positive = True       # bool型(真偽値)

Pythonの変数には、値に応じて自動的に型(データの種類)が決まる。代表的な型は次の3つである。

  • int型:整数(1, 100, -5など)
  • str型:文字列("こんにちは" のように、引用符で囲んだ文字の並び)
  • bool型:真偽値(True か False の2択)

print() で変数の中身を表示し、type() で変数の型を確認できる。

(注意)以降のコードブロックは、直前のブロックの後にそのまま続けて書いていくことが前提の抜粋である。途中のブロックだけを単独でファイルに保存して実行すると NameError(変数が定義されていないというエラー)になるので、上から順につなげて1つのファイルにしてから実行してほしい。

print(label)
print("値:", byte_count)
print("型:", type(byte_count))

実行結果

3バイトの場合
値: 3
型: <class 'int'>

四則演算と比較演算子

Pythonでは、+(足し算)、-(引き算)、*(掛け算)、/(割り算)といった四則演算の記号(演算子)がそのまま使える。

bit_count = byte_count * 8   # 1バイト=8ビットなので、8を掛ける
print(f"{byte_count}バイトは{bit_count}ビット")

実行結果

3バイトは24ビット

「等しいか」「大きいか」といった比較には、比較演算子を使う。比較の結果は、真偽値(True / False)で返ってくる。

print(bit_count > 16)   # 比較演算子(16より大きいか)
print(bit_count == 24)  # 等しいか

実行結果

True
True

== は「等しいかどうか」を調べる演算子である。変数に値を代入する = と見た目が似ているが、意味がまったく違うので注意したい。

print()とf-stringの書式指定

このブログのFE試験問題シリーズのコードには、f"{n:08b}" や f"{n:3d}" のような書き方がよく出てくる。これはf-string(エフストリング)と呼ばれる書き方で、文字列の中に {変数} と書くだけで、変数の値をそのまま埋め込める。

n = 5
print(f"{n:3d}")     # 3桁分の幅を確保して右揃えで表示
print(f"{n:08b}")    # 8桁の2進数(0埋め)として表示

実行結果

  5
00000101

{n:3d} の :3d の部分は書式指定子と呼ばれ、「10進数(d)として、3桁分の幅で表示する」という意味である。同様に :08b は「2進数(b)として、8桁になるよう0で埋めて表示する」という意味になる。このブログのコードでビット列を表示するときに、この書き方がよく使われている。

【つくってみよう】バイト⇔ビット変換プログラム

ここまでの内容を使って、バイト数とビット数を相互に変換する小さなプログラムをつくってみよう。

def bytes_to_bits(byte_count):
    """バイト数からビット数を求める"""
    return byte_count * 8


def bits_to_bytes(bit_count):
    """ビット数からバイト数を求める(割り切れない場合は切り上げ)"""
    return -(-bit_count // 8)  # 切り上げ割り算


print("=== バイト -> ビット ===")
for b in [1, 3, 10, 100]:
    print(f"{b:4d}バイト -> {bytes_to_bits(b):5d}ビット")

print()
print("=== ビット -> バイト ===")
for bits in [8, 20, 64, 100]:
    print(f"{bits:4d}ビット -> {bits_to_bytes(bits):5d}バイト")

実行結果

=== バイト -> ビット ===
   1バイト ->     8ビット
   3バイト ->    24ビット
  10バイト ->    80ビット
 100バイト ->   800ビット

=== ビット -> バイト ===
   8ビット ->     1バイト
  20ビット ->     3バイト
  64ビット ->     8バイト
 100ビット ->    13バイト

def で始まる部分が関数の定義である。関数とは、「入力(引数)を受け取って、何らかの処理をした結果(戻り値)を返す」処理のまとまりである。bytes_to_bits() はバイト数を受け取ってビット数を返し、bits_to_bytes() はその逆を行う。

for b in [1, 3, 10, 100]: の部分は、リストに入っている値を1つずつ取り出して繰り返すfor文である。for文とリストについては、次回にもう少し詳しく扱う。

20ビットは8で割り切れないため、2バイトではなく3バイトとして表示されている。bits_to_bytes() の中の -(-bit_count // 8) は、割り算の結果を切り上げるための書き方である。こうした「端数の切り上げ」も、実際にコードを動かしてみるとイメージしやすい。

まとめ

  • 変数は 変数名 = 値 で作り、int(整数)・str(文字列)・bool(真偽値)といった型を持つ
  • 四則演算子(+ - * /)と比較演算子(== > < など)で計算や比較ができる
  • f-stringを使うと、f"{変数:書式指定子}" の形で、変数の値を好きな書式で文字列に埋め込める
  • def で関数を定義すると、処理をひとまとまりにして、何度でも呼び出せる

今回学んだ変数・型・print・f-stringが読めれば、「基本情報技術者試験問題に挑戦しよう!」シリーズの出力部分のコードは、だいぶ読みやすくなっているはずである。

次回は、条件分岐(if)・繰り返し(for)・関数の引数・辞書(dict)を扱う。

(参考)筆者のリポジトリ

この記事で扱ったコードは、以下の筆者のGitHubリポジトリで公開している。

GitHub – HappyTalk10/pc-labo-python-basic
Contribute to HappyTalk10/pc-labo-python-basic development by creating an account on GitHub.
タイトルとURLをコピーしました