はい、承知いたしました。【完全初心者向け】Pythonとは何かを基礎から丁寧に解説する、約5000語の詳細な記事を作成します。
【完全初心者向け】Pythonとは? 基礎からやさしく、丁寧に解説
プログラミングの世界へようこそ!
あなたが今、この記事を読んでいるということは、「プログラミングを始めてみたいけど、何から手をつければいいんだろう?」「Pythonってよく聞くけど、一体何なんだろう?」そんな疑問や期待を抱えているのではないでしょうか。
プログラミングは、私たちの周りのデジタル技術を動かしている「魔法」のようなものです。ウェブサイト、スマートフォンアプリ、ゲーム、さらには自動車の制御システムや人工知能まで、プログラミングなしには成り立ちません。
そして、そのプログラミングの世界への扉を開く鍵として、今最も注目されている言語の一つが「Python」です。
この記事は、プログラミングの経験がまったくない、まさに「完全初心者」のあなたに向けて書かれています。Pythonがどのような言語なのか、なぜ初心者におすすめなのか、そしてPythonを使って何ができるのかを、専門用語を避けつつ、基礎の基礎から徹底的に、そして優しく解説します。
約5000語というボリュームで、Pythonの全体像を掴み、実際に簡単なコードに触れるところまでを目標とします。この記事を読み終える頃には、Pythonがどんなもので、どのように学習を進めていけば良いのか、きっと明確になっているはずです。
さあ、ワクリングするプログラミングの世界、その第一歩をPythonと一緒に踏み出しましょう!
目次
- プログラミングの世界へようこそ
- プログラミングとは何か?
- なぜプログラミングを学ぶのか?
- プログラミング言語とは?
- Pythonはどんな種類の言語?
- Pythonとは何か?
- Pythonの誕生と歴史
- Pythonの名前の由来
- Pythonの哲学:「The Zen of Python」
- Pythonの主な特徴
- なぜPythonが初心者におすすめなのか?
- 読みやすく書きやすいシンプルな文法
- 豊富な学習リソースと活発なコミュニティ
- 多様な分野で活用できる汎用性の高さ
- 開発効率の高さ
- 少ないコード量で多くのことができる
- Pythonで何ができる?(具体的な活用例)
- Web開発
- データ分析・機械学習・AI
- 自動化・スクリプト作成
- ゲーム開発
- デスクトップアプリケーション開発
- 教育
- Pythonを始めよう!:最初のステップ
- Pythonのインストール方法(概要)
- Pythonを動かすための環境
- 最初のPythonプログラム:「Hello, World!」
- コードエディタ/IDEを使ってみよう
- Pythonの超基本:文法を知ろう
- コメント:コードにメモを残す
- 変数:情報を入れておく箱
- データ型:情報の種類
- 数値型 (整数, 浮動小数点数)
- 文字列型
- 真偽値型
- 演算子:計算や比較を行う
- 算術演算子
- 比較演算子
- 論理演算子
- Pythonで最も重要なルール:インデント(字下げ)
- 制御フロー:プログラムの流れを変える
- 条件分岐:if文、elif文、else文
- 繰り返し:for文
- 繰り返し:while文
- ループの制御:breakとcontinue (発展)
- データをまとめて扱う:リストとタプル
- リスト (list):順番があって変更可能なデータの並び
- タプル (tuple):順番があって変更不可能なデータの並び
- リストとタプルの使い分け
- 辞書と集合:ユニークなデータ構造
- 辞書 (dict):キーと値のペアでデータを管理
- 集合 (set):重複しないデータの集まり
- 関数:処理をまとめて再利用する
- 関数とは何か?なぜ使うのか?
- 関数の定義と呼び出し
- 引数と戻り値
- 組み込み関数
- モジュールとパッケージ:他の人が作ったコードを使う
- モジュールとは?
- モジュールのインポート
- よく使われる標準モジュール(例:math, random)
- パッケージとは?
- これからの学習に向けて
- 次に何を学ぶか?
- おすすめの学習リソース
- 実践の重要性
- まとめ:Python学習の旅は始まったばかり
1. プログラミングの世界へようこそ
プログラミングとは何か?
一言でいうと、プログラミングとは「コンピューターにやってほしい仕事を、コンピューターが理解できる言葉(プログラミング言語)で指示すること」です。
コンピューターは非常に賢いですが、自分で考えて行動することはできません。私たちが「これを計算して」「このボタンが押されたら画面の色を変えて」「インターネットからこの情報を取ってきて」といった具体的な指示を与えて初めて、コンピューターは動き出します。
この「指示の集まり」のことを「プログラム」と呼びます。プログラミングは、このプログラムを作り出す作業のことです。
なぜプログラミングを学ぶのか?
プログラミングを学ぶ理由は人それぞれですが、主なものをいくつか挙げてみましょう。
- 問題解決能力の向上: プログラミングは、複雑な問題を小さなステップに分解し、一つずつ解決していく思考プロセスを鍛えます。これはプログラミングだけでなく、日常生活や仕事においても非常に役立つスキルです。
- 創造性の表現: 自分のアイデアを形にすることができます。ウェブサイト、アプリ、ゲーム、アート作品など、コンピューター上で動くものを自分で作り出す楽しさは格別です。
- キャリアの可能性: IT分野はもちろん、様々な業界でプログラミングスキルは求められています。新しい職種に挑戦したり、今の仕事の効率を上げたりする強力な武器になります。
- テクノロジーの理解: 私たちが日々使っているテクノロジーがどのように動いているのかを理解することで、世界を見る目が変わります。
難しそうに感じるかもしれませんが、最初は小さなことから始めれば大丈夫です。重要なのは、自分で考え、試行錯誤するプロセスを楽しむことです。
プログラミング言語とは?
コンピューターは、電気信号のオンとオフ(0と1)で情報を扱います。これを「機械語」と呼びます。しかし、人間が機械語で直接プログラムを書くのは非常に困難です。例えば、「Hello, World!」と画面に表示するだけでも、膨大な0と1の羅列を書くことになります。
そこで生まれたのが「プログラミング言語」です。プログラミング言語は、人間が理解しやすいように英単語や記号を使って書かれています。例えば、Pythonでは print("Hello, World!")
と書けば、コンピューターは画面に「Hello, World!」と表示してくれます。
プログラミング言語で書かれたプログラムは、コンピューターが理解できる機械語に翻訳されることで実行されます。この翻訳の仕方にいくつか種類があり、Pythonは後述する「インタプリタ言語」に分類されます。
Pythonはどんな種類の言語?
プログラミング言語には様々な分類方法がありますが、初心者にとって特に知っておきたいのは以下の点です。
- 高水準言語 (High-level Language): 人間が理解しやすいように設計されている言語です。機械語に近い「低水準言語」と対比されます。Pythonは高水準言語なので、英単語に近い感覚でコードを書くことができます。
- 汎用プログラミング言語 (General-purpose Programming Language): 特定の用途に限定されず、様々な目的で使える言語です。Pythonは、Web開発、データ分析、AI、自動化など、非常に幅広い分野で利用できます。
- インタプリタ言語 (Interpreted Language): プログラムのコードを、実行時に一行ずつ翻訳しながら実行していくタイプの言語です。これに対し、事前にプログラム全体を翻訳(コンパイル)してから実行する言語を「コンパイラ言語」と呼びます。インタプリタ言語は、コードを書いてすぐに実行結果を確認できるため、試しながら開発を進めやすいという特徴があります。Pythonはこのインタプリタ言語に分類されます。
これらの特徴が、Pythonが初心者にとって学びやすい理由の一つとなっています。
2. Pythonとは何か?
では、いよいよPythonそのものに迫っていきましょう。
Pythonの誕生と歴史
Pythonは、1991年にオランダのプログラマー、グイド・ヴァン・ロッサム氏によって開発されました。今から30年以上も前に生まれた言語ですが、近年、特に人気が急上昇しています。
開発当初から、「読みやすさ」「書きやすさ」を重視して設計されており、他の言語で複雑になりがちな処理もシンプルに記述できるようになっています。これは、開発者であるグイド氏が、既存の言語の欠点を踏まえ、より楽しく、効率的にプログラミングできる言語を目指したためです。
その後、多くの開発者の貢献によって機能が追加され、改良が重ねられてきました。現在主流となっているのは「Python 3系」と呼ばれるバージョンです。
Pythonの名前の由来
Pythonという名前を聞いて、ヘビを思い浮かべる人が多いかもしれません。確かに、Pythonのロゴやアイコンにはヘビが使われています。しかし、実は言語の名前はヘビとは直接関係ありません。
Pythonの名前は、グイド氏が当時ファンだったイギリスのコメディ番組「空飛ぶモンティ・パイソン (Monty Python’s Flying Circus)」に由来しています。なんだかユニークで親しみが持てますね!このユーモラスな名前の由来も、Pythonの親しみやすさを象徴しているかのようです。
Pythonの哲学:「The Zen of Python」
Pythonには、「The Zen of Python(Pythonの禅)」と呼ばれる、Pythonの設計思想や哲学をまとめた20個の格言があります。そのうち19個が公開されており、Pythonのコード内で簡単なコマンドを実行すると見ることができます(import this
と入力して実行してみてください)。
この哲学の中で特に有名なのが、以下の格言です。
- “Beautiful is better than ugly.” (美しいは醜いより良い)
- “Explicit is better than implicit.” (明示的は暗示的より良い)
- “Simple is better than complex.” (シンプルは複雑より良い)
- “Readability counts.” (読みやすさは重要である)
これらの格言が示すように、Pythonは読みやすく、シンプルで、誰が見ても理解しやすいコードを書くことを非常に重視しています。この「読みやすさ」が、後述するPythonが初心者におすすめな理由の大きな一つです。
Pythonの主な特徴
改めて、Pythonの主な特徴をまとめます。
- シンプルで読みやすい文法: 自然言語(英語)に近い感覚でコードを書けます。後ほど詳しく見ますが、特にインデント(字下げ)を使ってコードのブロックを表現するのが特徴です。
- 多様な用途に使える汎用性: Web開発、データ分析、AI、自動化など、本当に幅広い分野で活躍します。
- 豊富なライブラリとフレームワーク: Python本体の機能に加えて、世界中の開発者が作った便利なプログラム部品(ライブラリやフレームワーク)がたくさんあります。これらを使うことで、ゼロから全てを作る必要がなく、効率的に開発を進められます。
- 活発なコミュニティ: 世界中にPythonユーザーがいます。困った時に質問できる場所がたくさんあり、学習リソースも豊富です。
- インタプリタ言語: コードを書いてすぐに実行結果を確認できます。これは初心者にとって、試しながら学ぶ上で非常に助けになります。
- オープンソース: Pythonは誰でも自由に使ったり、改良したりできるオープンソースソフトウェアです。
これらの特徴が組み合わさることで、Pythonは世界中で最も人気のあるプログラミング言語の一つとなりました。
3. なぜPythonが初心者におすすめなのか?
数あるプログラミング言語の中から、なぜ多くの人が「Pythonが初心者におすすめ」と言うのでしょうか?その理由をさらに掘り下げてみましょう。
読みやすく書きやすいシンプルな文法
これがPythonが初心者におすすめされる最大の理由と言えるでしょう。
例えば、他のプログラミング言語では、処理の区切りに {}
(ブレース) や ;
(セミコロン) といった記号を多用することがよくあります。また、変数の宣言時にデータの型を明示的に書く必要がある言語もあります。
一方、Pythonではそのような記号の使用が少なく、インデント(字下げ)によってコードのまとまり(ブロック)を表現します。これにより、コードの構造が視覚的に分かりやすくなり、まるで普通の文章を読むかのようにコードを読むことができます。
例を見てみましょう。(現時点ではコードの意味が完全に分からなくても大丈夫です)
他の言語(例:Javaのような言語のイメージ):
java
public class HelloWorld {
public static void main(String[] args) {
int x = 10;
if (x > 5) {
System.out.println("x is greater than 5.");
}
}
}
Python:
python
x = 10
if x > 5:
print("x is greater than 5.")
どうでしょう? Pythonの方がシンプルで、スッキリしていると感じませんか? if
の後の処理がインデントされていることで、「この行は if
の条件が満たされたときに実行されるんだな」ということが一目で分かります。
このシンプルさが、プログラミングの概念自体を学ぶことに集中しやすくしてくれます。複雑な文法ルールに戸惑うことなく、論理的な思考を鍛えることに時間をかけられるのです。
豊富な学習リソースと活発なコミュニティ
Pythonは世界中で非常に人気があるため、インターネット上には公式ドキュメントはもちろん、解説記事、チュートリアル動画、オンラインコースなどが山のように存在します。しかも、その多くが無料で利用できます。
また、困ったときに質問できるコミュニティ(フォーラム、Q&Aサイト、SNSなど)も非常に活発です。多くの経験豊かなPythonエンジニアが、初心者の質問にも丁寧に答えてくれます。一人で悩む時間を減らし、スムーズに学習を進めることができます。
多様な分野で活用できる汎用性の高さ
前述の通り、Pythonは様々な分野で使われています。これは初心者にとって大きなメリットです。
最初はデータ分析に興味があったけど、途中でWeb開発に興味が出てきた、というように、学習を進める中で興味が変わることはよくあります。Pythonなら、別の言語に乗り換えることなく、そのまま新しい分野の学習に進むことができます。
一つの言語で幅広いスキルを身につけられるため、将来の選択肢が広がります。
開発効率の高さ
Pythonは、他の言語と比較して少ないコード量で同じ処理を実現できることが多いです。これは、Pythonが「電池付属 (batteries included)」と呼ばれるほど標準ライブラリが豊富だったり、簡潔に書ける文法が多いためです。
開発効率が高いということは、アイデアを素早く形にできるということです。初心者にとっては、挫折する前に「動くもの」を作り上げる体験を早く得られるため、モチベーションを維持しやすいというメリットがあります。
少ないコード量で多くのことができる
これも開発効率の話と関連しますが、Pythonは特にデータ処理や自動化の分野でその力を発揮します。
例えば、Excelファイルのデータを読み込んで集計する、ウェブサイトから特定の情報を取得する(スクレイピング)、定期的に実行したいタスクを自動化する、といった作業が、Pythonを使うと驚くほど少ないコードで実現できます。
これらの「日常業務の効率化」は、プログラミングを学ぶ具体的なメリットとして非常に分かりやすいため、初心者でもすぐに「プログラミングを学んでよかった!」と感じやすいでしょう。
これらの理由から、Pythonは「最初のプログラミング言語」として、世界中の多くの教育機関や企業で採用されています。
4. Pythonで何ができる?(具体的な活用例)
Pythonの汎用性の高さを、具体的な活用例を見てさらに深く理解しましょう。あなたの興味を引く分野があるかもしれません。
Web開発
PythonはWebサイトやWebアプリケーション開発のバックエンド(サーバー側)でよく使われます。ユーザーがWebサイトにアクセスしたときのリクエストを受け付け、データベースと連携したり、計算処理を行ったりして、表示するコンテンツを生成する部分です。
PythonにはWeb開発を効率的に行うための強力なフレームワークがいくつかあります。
- Django (ジャンゴ): 大規模なWebアプリケーション開発に適した、機能が豊富で規約が多い(=迷いにくい)フレームワーク。InstagramやDropboxなどでも使われています。
- Flask (フラスク): 小規模なWebアプリケーションやAPI開発に適した、シンプルで自由度が高いフレームワーク。手軽に始めやすいのが特徴です。
これらのフレームワークを使うことで、Webアプリケーション開発に必要な基本的な機能をイチから作る必要がなくなり、ビジネスロジック(アプリ独自の機能)の開発に集中できます。
データ分析・機械学習・AI
現在、Pythonが最も注目されている分野の一つです。膨大なデータを処理し、分析し、そこから知見を得るための強力なライブラリがPythonには揃っています。
- NumPy (ナンパイ): 数値計算、特に多次元配列(行列など)の高速計算に特化したライブラリ。データ分析の基盤となります。
- Pandas (パンダス): データの読み込み、加工、集計、可視化など、データ分析の多くの作業を簡単に行えるライブラリ。Excelやデータベースのような感覚でデータを扱えます。
- Matplotlib (マットプロットリブ), Seaborn (シーボーン): データのグラフ化、可視化を行うライブラリ。分析結果を分かりやすく表現できます。
そして、これらの基盤の上に、今話題の「機械学習」や「深層学習(ディープラーニング)」を実現するためのライブラリがあります。
- Scikit-learn (サイキットラーン): 機械学習の様々なアルゴリズム(分類、回帰、クラスタリングなど)を簡単に試せるライブラリ。
- TensorFlow (テンソルフロー), PyTorch (パイトーチ): 深層学習モデルを構築するための強力なライブラリ。画像認識、自然言語処理、音声認識など、現在のAI技術の多くを支えています。
これらのライブラリを使うことで、PythonはデータサイエンティストやAIエンジニアにとって不可欠なツールとなっています。
自動化・スクリプト作成
Pythonは、パソコン上での様々な作業を自動化するスクリプト(簡単なプログラム)を書くのに非常に適しています。
- ファイル操作: 大量のファイルの名前を変更したり、特定の条件でファイルを移動・コピーしたり。
- データ処理: 複数のExcelファイルからデータを読み込み、一つにまとめて集計する。
- Webスクレイピング: ウェブサイトから特定の情報を自動的に収集する。
- 定型業務: 毎日決まった時間に特定の処理を実行する(例:メールを送信する、レポートを作成する)。
これらの作業をPythonで自動化することで、手作業で行うよりも圧倒的に早く、正確に、そして繰り返し行うことができます。これが「Pythonは業務効率化に役立つ」と言われる所以です。プログラミング初心者でも、比較的取り組みやすく、すぐに役立ちを実感できる分野です。
ゲーム開発
Pythonは、ゲーム開発にも利用できます。本格的な3Dゲームの開発にはUnityやUnreal Engineのような専用のゲームエンジンが使われることが多いですが、Pythonには手軽に2Dゲームを作成できるライブラリがあります。
- Pygame (パイゲーム): シンプルな2Dゲームを開発するためのライブラリ。ゲームの基本的な要素(スプライトの表示、キーボード入力の検出、音の再生など)を簡単に扱えます。プログラミング学習の一環として、簡単なゲームを作りながら楽しく学ぶのに向いています。
デスクトップアプリケーション開発
WindowsやmacOSで動く、いわゆる「普通の」アプリケーションをPythonで開発することも可能です。GUI(Graphical User Interface、ボタンやウィンドウなどの操作画面)を持つアプリケーションのことです。
PythonにはGUIを作成するためのライブラリ(ツールキット)がいくつかあります。
- Tkinter (ティッカー): Pythonに標準で付属しているGUIツールキット。シンプルですが、基本的なGUIアプリケーションはこれで作れます。
- PyQt / PySide (パイキューティ/パイサイド): Qtという強力なGUIフレームワークをPythonから使うためのライブラリ。洗練された高機能なGUIアプリケーションを作成できます。
教育
その学びやすさから、Pythonはプログラミング教育の現場でも広く使われています。大学の入門コースや、子供向けのプログラミング教室でもPythonが選ばれることが増えています。
このように、Pythonは非常に多様な顔を持っています。あなたの「こんなことができたらいいな」というアイデアを実現するための強力なツールとなりうる可能性を秘めているのです。
5. Pythonを始めよう!:最初のステップ
Pythonがどんな言語で、何ができるのか、大まかに理解できたでしょうか。ここからは、実際にPythonに触れるための最初のステップに進みましょう。
Pythonのインストール方法(概要)
Pythonを使うためには、まずお使いのコンピューターにPythonをインストールする必要があります。
基本的な手順:
- Python公式サイトにアクセス: https://www.python.org/
- 最新版のPythonをダウンロード: ダウンロードページから、お使いのOS(Windows, macOSなど)に合ったインストーラーをダウンロードします。通常は、安定版の最新バージョンを選べばOKです。
- インストーラーを実行: ダウンロードしたファイルを開き、画面の指示に従ってインストールを進めます。
- Windowsの場合: インストール開始時に「Add Python XX to PATH」というチェックボックスが表示されることがあります。(XXはバージョン番号)。必ずこのチェックを入れてください。 これにチェックを入れることで、コマンドプロンプトやPowerShellからPythonコマンドを実行できるようになり、後々非常に便利です。
- macOSの場合: macOSには元々Pythonがインストールされていることが多いですが、古いバージョン(Python 2系)の場合があります。Python公式サイトから最新版(Python 3系)をインストールするのがおすすめです。インストール時に、Pythonコマンドへのパスが自動的に設定されることが多いです。
注意点:
- 詳細な手順はOSやPythonのバージョンによって少しずつ異なります。公式サイトや、信頼できる日本語の解説記事を参考にすることをおすすめします。「Python インストール Windows 手順」などで検索するとたくさん情報が出てきます。
- データ分析や機械学習を本格的に学びたい場合は、Python本体だけでなく、必要なライブラリ(NumPy, Pandasなど)があらかじめセットになっている「Anaconda (アナコンダ)」という配布版を利用するのも一つの方法です。ただし、最初はPython本体のインストールだけでも十分です。
インストールが完了したら、正しくインストールできたか確認しましょう。
確認方法:
コマンドプロンプト(Windows)またはターミナル(macOS)を開き、以下のコマンドを入力してEnterキーを押します。
bash
python --version
または、Python 3系を明示的に指定する場合(macOSなど、古いPythonが入っている環境):
bash
python3 --version
インストールしたPythonのバージョン番号が表示されれば成功です!
Python 3.x.x # このように表示されるはず
Pythonを動かすための環境
Pythonコードを実行するにはいくつかの方法があります。
-
対話型インタプリタ (REPL – Read-Eval-Print Loop):
- コマンドプロンプトまたはターミナルで
python
またはpython3
と入力してEnterを押すと起動します。 >>>
という記号が表示され、コードを一行ずつ入力してすぐに実行結果を確認できます。簡単なコードの動作確認や、Pythonを電卓のように使うのに便利です。- 終了するには
exit()
と入力するか、Ctrl+Z (Windows) / Ctrl+D (macOS) を押します。
- コマンドプロンプトまたはターミナルで
-
スクリプトファイルとして実行:
- 複数の命令をまとめたコードをテキストファイル(例:
hello.py
)に書き、.py
という拡張子で保存します。 - コマンドプロンプトまたはターミナルで
python ファイル名.py
と入力して実行します。 - 実際のアプリケーション開発では、この方法が一般的です。
- 複数の命令をまとめたコードをテキストファイル(例:
-
統合開発環境 (IDE) や高機能なコードエディタ:
- コードを書く、実行する、エラーを見つける(デバッグ)など、開発に必要な様々な機能を一つのソフトにまとめたものです。
- 初心者にとっては、コードの色分け表示(シンタックスハイライト)や、入力補完機能などが非常に役立ちます。
まずは対話型インタプリタでPythonに触れてみるのが手軽でおすすめです。慣れてきたら、スクリプトファイルとして保存・実行し、さらにコードエディタやIDEを導入すると良いでしょう。
最初のPythonプログラム:「Hello, World!」
プログラミング学習の伝統として、まず画面に「Hello, World!」と表示するプログラムを作ってみましょう。
方法1:対話型インタプリタで実行
- コマンドプロンプトまたはターミナルで
python
またはpython3
を起動。 -
>>>
の後に以下のコードを入力してEnter。python
print("Hello, World!") -
すぐに結果が表示されます。
Hello, World!
方法2:スクリプトファイルとして実行
- メモ帳などのテキストエディタを開きます。
-
以下のコードを入力します。
“`python
This is my first Python program
print(“Hello, World!”)
print(“Welcome to the world of Python!”)
``
#
(で始まる行は「コメント」です。後で詳しく説明します。)
hello.py
3. ファイル名をとし、どこか分かりやすい場所(例: デスクトップなど)に保存します。
cd フォルダのパス
4. コマンドプロンプトまたはターミナルを開き、保存したファイルがあるフォルダに移動します。(コマンドを使います。例:
cd Desktop`)
5. 以下のコマンドを入力してEnter。bash
python hello.py -
プログラムが実行され、結果が表示されます。
Hello, World!
Welcome to the world of Python!
おめでとうございます!これがあなたの最初のPythonプログラムです。
この print()
という部分は、Pythonに標準で備わっている「関数」の一つです。print()
関数は、括弧 ()
の中のものを画面に表示する役割を持っています。表示したいものが文字の並び(「文字列」と呼びます)の場合は、"
(ダブルクォーテーション) または '
(シングルクォーテーション) で囲む必要があります。
コードエディタ/IDEを使ってみよう
簡単なプログラムならメモ帳でも書けますが、プログラミング専用のコードエディタやIDEを使うと、格段に効率が上がります。
主な機能:
- シンタックスハイライト: コードの種類(キーワード、文字列、コメントなど)によって色を変えて表示してくれるので、コードが読みやすくなります。
- 入力補完: 数文字入力しただけで、続きのコード候補を表示してくれます。タイプミスを減らし、コーディング速度を上げます。
- エラー検出: コードに間違いがある場合に、実行する前に教えてくれたり、どこがおかしいかを示してくれたりします。
- デバッグ機能: プログラムを一時停止させながら、コードの実行を一行ずつ追ったり、変数の値を確認したりできます。
- コードの整形: コードのインデントなどを自動で揃えて、きれいに整形してくれます。
初心者におすすめのコードエディタ/IDE:
- VS Code (Visual Studio Code): Microsoftが開発している、無料で高機能なコードエディタです。Pythonだけでなく多くの言語に対応しており、拡張機能も豊富です。多くのプログラマーに利用されています。
- PyCharm Community Edition (パイチャーム コミュニティエディション): JetBrainsが開発している、Python開発に特化した高機能なIDEです。無料のCommunity版でも十分な機能があり、特に大規模な開発に向いています。
- IDLE (アイドル): Pythonをインストールすると標準でついてくる簡易IDEです。機能はシンプルですが、手軽に使い始められます。
どれを選んでも良いですが、最初はVS Codeが手軽さと機能のバランスが良いかもしれません。好きなものを選んでインストールし、hello.py
ファイルを開いて編集してみてください。色が付いたり、入力候補が出たりするはずです。
6. Pythonの超基本:文法を知ろう
ここからは、Pythonの基本的な文法について、一つずつ丁寧に見ていきましょう。
コメント:コードにメモを残す
プログラムコードは、コンピューターが実行するためのものですが、同時に人間が読んで理解するためのものでもあります。特に、後から自分がコードを見返したり、他の人とコードを共有したりする際に、コードの意図や説明が書かれていると非常に助かります。
そのために使うのが「コメント」です。コメントとして書かれた部分は、Pythonインタプリタによって無視され、プログラムの実行には影響しません。
Pythonでコメントを書く方法は主に2つあります。
-
一行コメント:
#
(シャープ) を行の先頭またはコードの行末に書きます。#
から行の終わりまでがコメントになります。“`python
これは一行コメントです
print(“Hello!”) # この行の処理についてコメントを残す
“` -
複数行コメント(Docstring – ドックストリング): 3つのダブルクォーテーション
"""
またはシングルクォーテーション'''
で囲みます。関数やクラスなどの説明を書くためによく使われますが、単に複数行のコメントとして使うこともできます。python
"""
これは複数行にわたるコメントです。
このプログラムの目的などを書くのに便利です。
"""
print("これはコメントではありません")
コメントを適切に使うことで、あなたの書いたコードが「分かりやすい」コードになります。これはプログラミング学習において非常に重要な習慣です。
変数:情報を入れておく箱
プログラミングでは、様々な「情報」を扱います。数値、文字、計算結果など、これらの情報を一時的に記憶しておき、後で使ったり、書き換えたりする必要が出てきます。
この「情報を入れておく場所」が変数 (variable) です。変数は例えるなら、「名前のついた箱」のようなものです。箱には様々なものを入れることができます(数値、文字など)。また、箱の中身は後から別のものに入れ替えることもできます。
Pythonで変数を使うには、以下の形式で「代入 (assignment)」を行います。
python
変数名 = 値
=
は数学的な「等しい」という意味ではなく、「右側の値を、左側の変数に入れる」という意味です。
例:
“`python
数値を代入
age = 30
文字列を代入
name = “Alice”
変数の中身を表示
print(age)
print(name)
変数の中身を書き換える(別の値を代入する)
age = 31
print(age) # 結果は 31 になる
“`
実行結果:
30
Alice
31
変数名のルール:
変数名は何でも好きなようにつけて良いわけではなく、いくつかルールがあります。
- 半角英数字とアンダースコア
_
が使えます。 - 数字で始めることはできません(
1st_number
はNG)。 - 大文字と小文字は区別されます (
Name
とname
は別の変数です)。 - Pythonの予約語(キーワード)は変数名として使えません。予約語とは、Pythonであらかじめ意味が決められている単語(例:
if
,for
,while
,print
,True
,False
など)のことです。 - 変数名には、その変数がどんな情報を持っているのかが分かりやすい名前をつけるのが良い習慣です(例:
user_name
よりもu_n
の方が分かりにくい)。
Pythonでは、変数を宣言する際にデータの型(数値なのか、文字列なのかなど)を明示的に書く必要がありません。代入した値によって、Pythonが自動的にその変数の型を判断してくれます。これを動的型付け (Dynamic Typing) と言います。これはPythonのシンプルさの一因です。
データ型:情報の種類
変数に入れられる「値」には、いくつかの種類があります。これをデータ型 (Data Type) と呼びます。Pythonには様々なデータ型がありますが、初心者の方がまず知っておくべき基本的なものを紹介します。
-
数値型 (Numeric Types):
- 整数 (int): 小数点を含まない数(例:
10
,-5
,0
)。 - 浮動小数点数 (float): 小数点を含む数(例:
3.14
,-0.5
,2.0
)。科学技術計算など、より精密な数値を扱いたい場合に利用します。
“`python
count = 10 # 整数 (int)
pi = 3.14 # 浮動小数点数 (float)
large_number = 1000000000 # 非常に大きな整数も扱えるprint(type(count)) # type() 関数でデータ型を確認できる
print(type(pi))
**実行結果:**
“` - 整数 (int): 小数点を含まない数(例:
-
文字列型 (String Type – str): 文字の並びです。単語や文章などを扱います。
"
(ダブルクォーテーション) または'
(シングルクォーテーション) で囲んで表現します。“`python
message = “Hello, Python!”
greeting = ‘こんにちは’
empty_string = “” # 空の文字列もOKprint(message)
print(type(message))文字列の連結 (+)
full_message = greeting + ” ” + name # name変数は前の例で使ったもの
print(full_message)文字列の繰り返し (*)
print(“abc” * 3)
**実行結果:**
Hello, Python!
こんにちは Alice
abcabcabc
“` -
真偽値型 (Boolean Type – bool):
True
(真) またはFalse
(偽) のどちらか一つの値を持つデータ型です。条件分岐などで、「〜である」か「〜ではない」かを判断するために使われます。True
とFalse
は、それぞれ大文字で始まる必要があります。“`python
is_valid = True
is_finished = Falseprint(is_valid)
print(type(is_valid))比較演算子の結果は真偽値になる
print(10 > 5)
print(10 == 5)
**実行結果:**
True
True
False
“`
演算子:計算や比較を行う
プログラミングでは、データを使って様々な計算や操作を行います。そのために使うのが演算子 (Operator) です。
-
算術演算子 (Arithmetic Operators): 数値の計算を行います。
演算子 意味 例 結果 +
加算 (足し算) 10 + 5
15
-
減算 (引き算) 10 - 5
5
*
乗算 (掛け算) 10 * 5
50
/
除算 (割り算) 10 / 5
2.0
//
切り捨て除算 10 // 3
3
%
剰余 (割り算の余り) 10 % 3
1
**
べき乗 2 ** 3
8
/
演算子は、整数同士の割り算でも結果が浮動小数点数になることに注意してください。“`python
a = 20
b = 6print(a + b)
print(a – b)
print(a * b)
print(a / b) # float 型になる
print(a // b) # int 型になる (小数点以下切り捨て)
print(a % b) # 余り
print(2 ** 4) # 2の4乗
“` -
比較演算子 (Comparison Operators): 二つの値を比較し、その結果を真偽値 (
True
またはFalse
) で返します。演算子 意味 例 結果 ==
等しい 10 == 10
True
!=
等しくない 10 != 5
True
>
より大きい 10 > 5
True
<
より小さい 10 < 5
False
>=
以上 (より大きいか等しい) 10 >= 10
True
<=
以下 (より小さいか等しい) 10 <= 5
False
“`python
x = 10
y = 12print(x == y) # xとyは等しいか?
print(x != y) # xとyは等しくないか?
print(x < y) # xはyより小さいか?
print(x >= 10) # xは10以上か?
“` -
論理演算子 (Logical Operators): 真偽値を使って、複数の条件を組み合わせる際に使います。
演算子 意味 例 結果 and
論理積 (かつ) True and False
False
(両方がTrueならTrue)or
論理和 (または) True or False
True
(どちらか一方でもTrueならTrue)not
論理否定 (〜ではない) not True
False
(TrueならFalse, FalseならTrue)“`python
is_sunny = True
is_warm = False晴れていて、かつ暖かいか?
print(is_sunny and is_warm)
晴れているか、または暖かいか?
print(is_sunny or is_warm)
晴れていないか?
print(not is_sunny)
複雑な例: 10より大きく、かつ20以下の数か?
num = 15
print(num > 10 and num <= 20)
“`
これらの演算子を組み合わせることで、プログラムの中で様々な計算や判断を行うことができます。
Pythonで最も重要なルール:インデント(字下げ)
他の多くのプログラミング言語では、コードのまとまり(ブロック)を {}
のような記号で囲みます。しかし、Pythonではインデント(行の先頭の空白やタブ)を使ってコードのブロックを示します。
これはPythonの最も特徴的なルールであり、同時に非常に重要なルールです。インデントが正しくないと、Pythonはエラー(IndentationError)を出力し、プログラムは実行されません。
例として、後ほど学ぶ if
文を使って見てみましょう。
“`python
score = 85
if score >= 60:
# ここからインデントされたブロックが始まる
print(“合格です!”)
print(“よく頑張りました!”)
# インデントが終わるとブロックも終わる
print(“処理終了”) # これはif文のブロックの外にある
“`
この例では、if score >= 60:
の行の後に、print("合格です!")
と print("よく頑張りました!")
の2行がインデントされています。これは、「もし score
が60以上ならば、このインデントされた2行を実行しなさい」という意味になります。
print("処理終了")
の行はインデントされていないため、これは if
文のブロックとは関係なく、常に実行されます。
インデントの注意点:
- 同じブロック内のコードは、同じ深さでインデントする必要があります。
- インデントには、スペースまたはタブを使います。
- 一つのプログラム内では、スペースとタブを混ぜて使わないのが強い推奨です。 一般的には、スペース4個でインデントするのがPythonの慣習(PEP 8というPythonのコード規約で推奨されています)です。多くのコードエディタでは、Tabキーを押すと自動的にスペース4個を入力する設定にできます。
インデントは最初は少し戸惑うかもしれませんが、慣れるとコードの構造が一目で分かりやすくなるというメリットがあります。これはPythonの「読みやすさ」に大きく貢献しています。
7. 制御フロー:プログラムの流れを変える
通常、プログラムは書かれた順番に上から下に一行ずつ実行されていきます。しかし、これだけでは単純な処理しかできません。
「もし〜ならば、この処理を行う」「この処理を〜回繰り返す」「〜の間、この処理を続ける」といったように、プログラムの流れを条件によって変えたり、同じ処理を何度も繰り返したりする機能が必要です。これを制御フロー (Control Flow) と呼びます。
Pythonで制御フローを実現するための代表的な構文が、条件分岐 (if
文) と 繰り返し (for
文,
while` 文) です。
条件分岐:if文、elif文、else文
条件分岐は、「もし〜という条件が真ならば、この処理を行う」というように、特定の条件が満たされたかどうかで実行する処理を切り替える構文です。
Pythonでは if
, elif
, else
というキーワードを使って条件分岐を書きます。
-
if
文: 最も基本的な条件分岐です。「もし〜という条件が真 (True
) ならば、このブロック内の処理を実行する」という意味になります。“`python
temperature = 28if temperature > 25:
print(“暑いです。エアコンをつけましょう。”)print(“プログラム終了”)
**実行結果:**
暑いです。エアコンをつけましょう。
プログラム終了
``
temperatureが
25以下の場合は、
ifの中の
print` は実行されず、「プログラム終了」だけが表示されます。 -
else
文:if
文の条件が偽 (False
) だった場合に実行したい処理があるときに使います。if
文の後に続けます。“`python
score = 55if score >= 60:
print(“合格です!”)
else: # ifの条件がFalseだった場合
print(“不合格です。”)print(“プログラム終了”)
**実行結果:**
不合格です。
プログラム終了
“` -
elif
文: 複数の条件を順番にチェックしたい場合に、「そうでなく、もし〜ならば」という意味で使います。if
とelse
の間にいくつでも挟むことができます。“`python
score = 75if score >= 80:
print(“評価:A”)
elif score >= 60: # scoreが80未満で、かつ60以上の場合
print(“評価:B”)
else: # scoreが60未満の場合
print(“評価:C”)print(“評価完了”)
**実行結果:**
評価:B
評価完了
``
if,
elif,
elseは上から順番に条件をチェックし、**最初に真 (
True) になった条件のブロックだけを実行します**。その後の
elifや
elseはチェックされません。どの条件も真にならなかった場合は、
elseブロックが実行されます(
else` がない場合は何も実行されません)。
繰り返し:for文
for
文は、「何かの集まり(リストや文字列など)の要素を一つずつ取り出して、その要素に対して同じ処理を繰り返したい」場合によく使われます。
基本的な書き方:
python
for 変数名 in 集まり:
# 集まりから取り出された要素が変数名に代入される
# このブロック内の処理が、要素の数だけ繰り返される
繰り返し実行したい処理
例:リストの各要素を表示する
“`python
fruits = [“apple”, “banana”, “cherry”]
for fruit in fruits:
print(fruit)
print(“ループ終了”)
**実行結果:**
apple
banana
cherry
ループ終了
``
fruits
このコードは、リストから要素を順番に("apple"、次に"banana"、最後に"cherry")取り出し、その要素を
fruitという変数に入れて、
print(fruit)` を実行します。リストの要素が全てなくなると、ループは終了します。
特定の回数繰り返す:
for
文は、特定の回数だけ処理を繰り返したい場合にもよく使われます。その際には、range()
という関数が便利です。
range(N)
と書くと、0 から N-1 までの整数の「並び」を作ります。例えば range(5)
は 0, 1, 2, 3, 4
という並びになります。
“`python
5回繰り返す (0から4まで)
for i in range(5):
print(f”{i}回目の繰り返しです”) # f-string という便利な表示方法です
print(“ループ終了”)
**実行結果:**
0回目の繰り返しです
1回目の繰り返しです
2回目の繰り返しです
3回目の繰り返しです
4回目の繰り返しです
ループ終了
``
i` には、0, 1, 2, 3, 4 が順番に代入され、ループが5回実行されます。
変数
range()
関数は他にも range(start, stop)
(startからstop-1まで)や range(start, stop, step)
(step刻みで)のような使い方もできます。
繰り返し:while文
while
文は、「〜という条件が真 (True
) である間、この処理を繰り返し続ける」場合に使われます。条件が偽 (False
) になった時点でループが終了します。
基本的な書き方:
python
while 条件式:
# 条件式がTrueの間、繰り返し実行したい処理
繰り返し実行したい処理
# 条件をFalseに変えるための処理(これがないと無限ループになる可能性がある!)
例:カウンターを使って特定の回数繰り返す
“`python
count = 0
while count < 5:
print(f”現在のカウント: {count}”)
count = count + 1 # または count += 1 とも書けます
print(“ループ終了”)
**実行結果:**
現在のカウント: 0
現在のカウント: 1
現在のカウント: 2
現在のカウント: 3
現在のカウント: 4
ループ終了
``
count
この例では、が5未満である限りループが実行されます。ループの中で
countの値を1ずつ増やしていくため、いつか
countは5以上になり、条件 (
count < 5) が
False` となってループが終了します。
無限ループに注意!
while
文を使う際には、ループの中で必ずいつか条件が偽 (False
) になるような処理を書くことが非常に重要です。もし条件が常に真 (True
) のままだと、「無限ループ」となり、プログラムが停止しなくなってしまいます。
例えば、上の例で count = count + 1
の行を書き忘れると、count
はずっと0のままで count < 5
が常に True
になり、プログラムは無限に「現在のカウント: 0」と表示し続けてしまいます。
無限ループになってしまった場合は、プログラムを強制終了させる必要があります(コマンドプロンプト/ターミナルなら Ctrl + C
を押すのが一般的です)。
for
文と while
文は、どちらも繰り返し処理を行うためのものですが、
for
文は「回数や対象(リストなど)があらかじめ決まっている」場合に適しています。while
文は「特定の条件が満たされるまで続けたい」「回数は実行してみないと分からない」場合に適しています。
ループの制御:breakとcontinue (発展)
for
文や while
文による繰り返し処理の途中で、特別な操作を行いたい場合があります。その際に break
と continue
というキーワードが使われます。
-
break
: ループの実行を即座に終了させ、ループの次の行に処理を移します。“`python
numbers = [1, 2, 3, 4, 5, 6, 7]for num in numbers:
if num == 5:
print(“5を見つけたのでループを抜けます”)
break # numが5になったらループ終了
print(num)print(“ループ終了後の処理”)
**実行結果:**
1
2
3
4
5を見つけたのでループを抜けます
ループ終了後の処理
“` -
continue
: ループの現在の繰り返し処理だけをスキップし、次の繰り返しに進みます。“`python
numbers = [1, 2, 3, 4, 5, 6, 7]for num in numbers:
if num % 2 == 0: # numが偶数なら
print(f”{num}は偶数なのでスキップします”)
continue # この後の処理はスキップし、次のnumへ
print(f”{num}は奇数です”) # 奇数の場合だけ表示されるprint(“ループ終了後の処理”)
**実行結果:**
1は奇数です
2は偶数なのでスキップします
3は奇数です
4は偶数なのでスキップします
5は奇数です
6は偶数なのでスキップします
7は奇数です
ループ終了後の処理
“`
break
と continue
は、ループ処理をより柔軟に制御するために役立ちますが、使いすぎるとコードが読みにくくなることもあるため、シンプルに書ける場合は他の方法も検討しましょう。
8. データをまとめて扱う:リストとタプル
これまでは変数で一つの値を扱ってきました。しかし、複数のデータをまとめて管理したい場面はよくあります。例えば、100人のテストの点数を扱いたい場合、100個の変数を作るのは大変です。
このような場合に役立つのが、複数のデータをまとめて格納できる「コレクション」と呼ばれるデータ構造です。Pythonにはいくつかの便利なコレクション型がありますが、ここでは「リスト」と「タプル」を紹介します。
リスト (list):順番があって変更可能なデータの並び
リストは、複数のデータを順番に並べて格納するのに使われるデータ型です。[]
(角括弧) を使って表現し、要素は ,
(カンマ) で区切ります。
リストの大きな特徴は「ミュータブル (Mutable)」であることです。これは、一度作ったリストの中身(要素の追加、削除、変更)を後から自由に変更できるという意味です。
“`python
リストの作成
fruits = [“apple”, “banana”, “cherry”, “apple”] # 同じ要素を含んでいてもOK
numbers = [1, 2, 3, 4, 5]
mixed_list = [“Python”, 3.14, True, 100] # 異なるデータ型を混ぜてもOK
empty_list = [] # 空のリストも作成できる
print(fruits)
print(numbers)
“`
リストの要素へのアクセス:
リストの各要素には、インデックス (Index) という番号を使ってアクセスします。インデックスは 0から始まります。
“`python
fruits = [“apple”, “banana”, “cherry”]
print(fruits[0]) # 最初の要素 (インデックス0)
print(fruits[1]) # 2番目の要素 (インデックス1)
print(fruits[2]) # 3番目の要素 (インデックス2)
マイナスのインデックスも使える
print(fruits[-1]) # 末尾の要素
print(fruits[-2]) # 末尾から2番目の要素
リストの長さを取得する
print(len(fruits)) # len() 関数を使う
**実行結果:**
apple
banana
cherry
cherry
banana
3
“`
存在しないインデックスにアクセスしようとするとエラー(IndexError)になります。
リストの要素の変更:
リストはミュータブルなので、要素の値を後から変更したり、要素を追加したり、削除したりできます。
-
要素の変更:
python
fruits = ["apple", "banana", "cherry"]
fruits[1] = "grape" # インデックス1の要素を"grape"に変更
print(fruits)
実行結果:
['apple', 'grape', 'cherry']
-
要素の追加:
append()
メソッド(リストに付属する機能)を使います。末尾に追加されます。python
fruits = ["apple", "banana"]
fruits.append("orange") # "orange"を末尾に追加
print(fruits)
実行結果:
['apple', 'banana', 'orange']
他の方法としてinsert(index, element)
で指定した位置に挿入したり、extend(another_list)
で別のリストを連結したりもできます。 -
要素の削除:
del
文やremove()
メソッドを使います。“`python
fruits = [“apple”, “banana”, “cherry”]
del fruits[1] # インデックス1の要素を削除
print(fruits)fruits = [“apple”, “banana”, “cherry”]
fruits.remove(“cherry”) # “cherry”という値を持つ最初の要素を削除
print(fruits)
**実行結果:**
[‘apple’, ‘cherry’]
[‘apple’, ‘banana’]
“`
リストは、複数のデータを順番に、かつ後から内容を変更したい場合に非常に便利なデータ構造です。
タプル (tuple):順番があって変更不可能なデータの並び
タプルもリストと同様に、複数のデータを順番に並べて格納するデータ型です。()
(丸括弧) を使って表現し、要素は ,
(カンマ) で区切ります。丸括弧は省略することも可能ですが、分かりやすさのために付けることが多いです。
リストとの決定的な違いは、タプルは「イミュータブル (Immutable)」であることです。これは、一度作ったタプルの中身を後から変更することができないという意味です。要素の追加、削除、変更はできません。
“`python
タプルの作成
colors = (“red”, “green”, “blue”)
point = (10, 20)
single_element_tuple = (5,) # 要素が1つの場合はカンマが必要
empty_tuple = ()
print(colors)
print(point)
print(single_element_tuple)
“`
タプルの要素へのアクセス:
リストと同様に、インデックスを使って要素にアクセスできます(0から始まります)。
“`python
colors = (“red”, “green”, “blue”)
print(colors[0]) # 最初の要素
print(colors[-1]) # 末尾の要素
print(len(colors)) # 長さも取得できる
**実行結果:**
red
blue
3
“`
タプルの要素の変更はできない:
タプルはイミュータブルなので、以下のコードはエラーになります。
“`python
colors = (“red”, “green”, “blue”)
colors[0] = “yellow” # エラーになる!
del colors[1] # エラーになる!
“`
リストとタプルの使い分け
-
リスト (list):
- 要素の数が変動する可能性がある場合。
- 要素を後から追加、削除、変更する必要がある場合。
- データコレクションとして柔軟に扱いたい場合。
-
タプル (tuple):
- 要素の数が固定で、変更されるべきではないデータの集まり(例: 座標
(x, y)
、RGBの色コード(r, g, b)
など)。 - リストよりも処理速度がわずかに速い(イミュータブルなため内部的な管理がシンプル)。
- 関数の戻り値として複数の値を返す際によく使われる。
- 辞書 (dict) のキーとして使える(リストはキーにできない)。
- 要素の数が固定で、変更されるべきではないデータの集まり(例: 座標
最初はリストを使う機会の方が多いと思いますが、「これは決まった値のセットだな」という場合はタプルを使うと、意図せず値が変わってしまうのを防ぐことができます。
9. 辞書と集合:ユニークなデータ構造
リストとタプルは「順番に並んだデータ」でしたが、Pythonには他にも便利なコレクション型があります。ここでは「辞書」と「集合」を紹介します。
辞書 (dict):キーと値のペアでデータを管理
辞書は、データを「キー (Key)」と「値 (Value)」のペアで管理するデータ構造です。例えるなら、単語(キー)とその意味(値)がセットになった実際の辞書のようなものです。
リストやタプルと異なり、辞書は要素が順番に並んでいるわけではありません(Python 3.7以降は挿入順が保持されますが、基本的には順番に依存しないものと考えます)。データを取り出すときは、インデックスではなく「キー」を使います。
{}
(波括弧) を使って表現し、各ペアは キー: 値
の形式で書き、ペア同士は ,
(カンマ) で区切ります。
“`python
辞書の作成
person = {“name”: “Alice”, “age”: 30, “city”: “Tokyo”}
scores = {“Math”: 90, “English”: 85, “Science”: 92}
empty_dict = {}
print(person)
print(scores)
“`
辞書の要素へのアクセス:
キーを使って対応する値を取り出します。
“`python
person = {“name”: “Alice”, “age”: 30, “city”: “Tokyo”}
print(person[“name”]) # “name”というキーの値を取得
print(person[“age”]) # “age”というキーの値を取得
存在しないキーにアクセスしようとするとエラー (KeyError)
print(person[“job”]) # エラーになる
**実行結果:**
Alice
30
“`
存在しないキーにアクセスする場合、エラーを防ぐために get()
メソッドを使う方法もあります。
python
print(person.get("job")) # キー"job"がないので None が返る
print(person.get("job", "Unknown")) # キーがなければ "Unknown" を返す
辞書の要素の追加と変更:
辞書もリストと同様にミュータブルです。キーを指定して値を追加・変更できます。
“`python
person = {“name”: “Alice”, “age”: 30}
新しい要素の追加
person[“city”] = “Tokyo”
print(person)
既存の要素の変更
person[“age”] = 31
print(person)
**実行結果:**
{‘name’: ‘Alice’, ‘age’: 30, ‘city’: ‘Tokyo’}
{‘name’: ‘Alice’, ‘age’: 31, ‘city’: ‘Tokyo’}
“`
辞書の要素の削除:
del
文や pop()
メソッドを使います。
“`python
person = {“name”: “Alice”, “age”: 31, “city”: “Tokyo”}
del person[“city”] # “city”というキーの要素を削除
print(person)
person = {“name”: “Bob”, “age”: 25}
removed_age = person.pop(“age”) # “age”の要素を削除し、その値を取得
print(person)
print(removed_age)
**実行結果:**
{‘name’: ‘Alice’, ‘age’: 31}
{‘name’: ‘Bob’}
25
“`
辞書は、データに名前(キー)を付けて管理したい場合に非常に便利なデータ構造です。設定情報や、複数の属性を持つオブジェクト(人、商品など)を表現するのに適しています。
集合 (set):重複しないデータの集まり
集合は、複数のデータを格納するデータ構造ですが、以下の2つの特徴があります。
- 重複する要素を含まない: 同じ値を持つ要素は一つしか格納されません。
- 順序がない: 要素が特定の順番で並んでいるわけではありません。
{}
(波括弧) を使って表現しますが、キーと値のペアではなく、要素だけを並べます。
“`python
集合の作成
fruits_set = {“apple”, “banana”, “cherry”, “apple”} # “apple”は重複しているので1つだけになる
numbers_set = {1, 2, 3, 4, 5}
mixed_set = {“Python”, 3.14, True}
empty_set = set() # 空の集合は {} ではなく set() で作成します({}は辞書になるため)
print(fruits_set) # 実行するたびに順序が変わる可能性がある
print(numbers_set)
**実行結果例 (順序は保証されない):**
{‘cherry’, ‘apple’, ‘banana’}
{1, 2, 3, 4, 5}
“`
集合の主な使い道:
- 重複の除去: リストなどに含まれる重複した要素を簡単に取り除くことができます。リストを一度集合に変換し、再度リストに戻すという方法がよく使われます。
- 高速なメンバーシップテスト: ある要素が集合に含まれているかどうかの判定 (
in
演算子) が非常に高速です。 - 集合演算: 数学的な集合演算(和集合、積集合、差集合など)を行うことができます。
“`python
重複の除去
my_list = [1, 2, 2, 3, 4, 4, 4, 5]
my_set = set(my_list) # リストから集合を作成
unique_list = list(my_set) # 集合からリストに戻す
print(unique_list) # 重複が取り除かれている
メンバーシップテスト
fruits_set = {“apple”, “banana”, “cherry”}
print(“apple” in fruits_set) # “apple”は含まれているか?
print(“grape” in fruits_set) # “grape”は含まれているか?
**実行結果:**
[1, 2, 3, 4, 5] # 順序は元のリストと異なる場合がある
True
False
“`
集合はあまり頻繁に使う機会がないかもしれませんが、重複を取り除きたい場合や、要素の存在チェックを高速に行いたい場合には非常に強力なツールです。
10. 関数:処理をまとめて再利用する
プログラムを書いていると、同じような処理を何度も行う必要が出てくることがあります。例えば、「ある数値を受け取って、それを2倍にして表示する」という処理を、様々な数値に対して行いたい場合などです。
このような場合、同じコードを何度も書くのは効率が悪く、修正が必要になった際にも全ての箇所を直さなければならず大変です。そこで役立つのが「関数 (Function)」です。
関数は、「特定の処理をひとまとまりにしたもの」です。一度関数を定義しておけば、必要なときにその「関数名」を呼び出すだけで、まとめた処理を実行できます。
関数とは何か?なぜ使うのか?
例えるなら、関数は「名前のついた自動販売機」のようなものです。
- お金(引数)を入れると、
- 自動販売機(関数)の中で決められた処理(飲み物を選ぶ、お金を確認する、商品を取り出すなど)が行われ、
- 飲み物(戻り値)が出てくる。
関数を使うメリットは以下の通りです。
- コードの再利用: 一度書いたコードを何度も呼び出して使えるため、コード量を減らせます。
- 可読性の向上: 複雑な処理を小さな関数に分割することで、プログラム全体が読みやすくなります。
- 保守性の向上: 処理に変更が必要になった場合、関数の定義箇所だけを修正すれば、その関数を呼び出している全ての箇所に修正が反映されます。
- テストの容易化: 小さな単位である関数ごとに正しく動作するかテストしやすくなります。
関数の定義と呼び出し
Pythonで関数を定義するには、def
キーワードを使います。
基本的な書き方:
python
def 関数名(引数1, 引数2, ...):
# 関数の本体(この関数が実行する処理)
# このブロック内のコードは、関数が呼び出されたときに実行される
繰り返し実行したい処理
# 必要であれば、戻り値を返す (return キーワードを使う)
return 戻り値
例:簡単な挨拶をする関数
“`python
def greet(): # 引数なしの関数
print(“こんにちは!”)
print(“お元気ですか?”)
関数の呼び出し
greet()
greet() # 何度でも呼び出せる
**実行結果:**
こんにちは!
お元気ですか?
こんにちは!
お元気ですか?
``
def greet():で
greetという名前の関数を定義しています。関数の本体は、その下のインデントされた部分です。関数を定義しただけでは何も実行されません。
greet()` のように「関数名()」の形で呼び出すことで、初めて関数の中のコードが実行されます。
引数と戻り値
-
引数 (Argument / Parameter): 関数に渡す外部のデータです。関数は引数として渡されたデータを使って処理を行うことができます。定義の際に
()
の中に変数名(これをパラメータ (Parameter) と呼びます)を書きます。呼び出す際に、そのパラメータに対応する実際の値(これを引数 (Argument) と呼びます)を渡します。“`python
名前を受け取って挨拶する関数
def greet_name(name): # name がパラメータ
print(f”こんにちは、{name}さん!”)関数を呼び出すときに、引数として名前を渡す
greet_name(“Alice”) # “Alice” が引数
greet_name(“Bob”) # “Bob” が引数
**実行結果:**
こんにちは、Aliceさん!
こんにちは、Bobさん!
“`複数の引数を取る関数も定義できます。
“`python
def add_numbers(x, y):
result = x + y
print(f”{x} + {y} = {result}”)add_numbers(5, 3)
add_numbers(10, 20)
“` -
戻り値 (Return Value): 関数の中で計算した結果や処理の結果を、関数を呼び出した側に返す値のことです。
return
キーワードを使って返します。return
を使うと、関数の実行はその時点で終了し、指定した値を呼び出し元に返します。“`python
2つの数値を足し合わせた結果を返す関数
def add_numbers_return(x, y):
result = x + y
return result # 計算結果を返す関数を呼び出し、戻り値を変数に格納
sum_result = add_numbers_return(10, 5)
print(f”計算結果は {sum_result} です”)戻り値を直接別の処理に使う
print(add_numbers_return(2, 3) * 2)
**実行結果:**
計算結果は 15 です
10
``
returnがない関数は、デフォルトで
Noneという特殊な値を返します。
None` は「何も値がない」ことを示します。
関数は、プログラムを部品化し、分かりやすく、効率的に書くための最も基本的な考え方です。最初は簡単な関数から作り始めて、慣れていくことが大切です。
組み込み関数
print()
関数のように、Pythonにはあらかじめ準備されている便利な関数がたくさんあります。これらを組み込み関数 (Built-in Functions) と呼びます。
いくつか例を挙げます。
print()
: 画面に何かを表示する。len()
: リスト、タプル、文字列、辞書などの長さ(要素数)を取得する。input()
: ユーザーがキーボードから入力した値を取得する。int()
,float()
,str()
: データ型を変換する(例: 文字列を整数に)。type()
: 変数や値のデータ型を確認する。range()
: 特定の範囲の数値の並びを生成する(for
文で使いました)。sum()
: リストなどの数値の合計を計算する。max()
,min()
: リストなどの中で最大値、最小値を取得する。
これらの組み込み関数を使いこなせるようになると、より簡単に様々な処理を行えるようになります。困ったときは「Python 組み込み関数 一覧」などで検索してみると良いでしょう。
11. モジュールとパッケージ:機能を借りる
Pythonの魅力の一つに、豊富な「ライブラリ」や「フレームワーク」があることを紹介しました。これらは、他の人が書いてくれた便利なプログラム部品の集まりです。
Pythonでは、このような外部のコードを「モジュール」や「パッケージ」という単位で管理し、自分のプログラムから「インポート」して利用することができます。
モジュールとは?
モジュールとは、簡単に言うと「Pythonのコード(変数、関数、クラスなど)をまとめて .py
ファイルとして保存したもの」です。
例えば、数学関連の便利な関数(平方根を計算する、三角関数など)をまとめた math.py
というファイルがあったとします。この math.py
が一つのモジュールです。
モジュールのインポート
他の人が作ったモジュールや、Pythonに標準で付属しているモジュールを使いたい場合は、自分のプログラムの先頭で import
キーワードを使って「読み込み」ます。
“`python
math モジュール全体をインポート
import math
random モジュール全体をインポート
import random
インポートしたモジュールの中の関数や変数を使う
「モジュール名.要素名」の形式でアクセスします
print(math.sqrt(25)) # mathモジュールのsqrt(平方根)関数を使う
print(random.randint(1, 10)) # randomモジュールのrandint(乱数生成)関数を使う
**実行結果例:**
5.0
7 # 実行するたびに変わる可能性がある
“`
モジュール全体をインポートするのではなく、モジュールの中の特定の要素だけをインポートすることもできます。その場合は from ... import ...
を使います。
“`python
math モジュールから sqrt 関数だけをインポート
from math import sqrt
random モジュールから randint 関数だけをインポート
from random import randint, choice # 複数の要素をカンマ区切りでインポートもできる
インポートした要素は、モジュール名を付けずに直接使える
print(sqrt(36))
print(randint(10, 20))
print(math.pi) # math全体をインポートしていないのでこれはエラーになる
“`
from module_name import *
と書くと、そのモジュールの中の全ての要素をまとめてインポートできますが、どの要素がどこから来たのか分かりにくくなるため、あまり推奨されません。
よく使われる標準モジュール
Pythonをインストールすると標準で付いてくる、非常に便利でよく使われるモジュールがたくさんあります。これを標準ライブラリと呼びます。
math
: 数学的な関数や定数(円周率πなど)を提供。random
: 乱数を生成する関数を提供(おみくじアプリやシミュレーションなどに)。os
: オペレーティングシステム(ファイルやフォルダの操作、環境変数の取得など)と連携する機能を提供。datetime
: 日付や時間を扱う機能を提供。json
: JSON形式のデータを扱う機能を提供(Web APIなどと連携する際によく使う)。
標準ライブラリだけでも、ちょっとした自動化やデータ処理に必要な機能が豊富に揃っています。
パッケージとは?
機能が増えてモジュールの数が増えてくると、それらを整理したくなります。そこで登場するのがパッケージ (Package) です。
パッケージは、モジュールをフォルダ分けして階層的に管理するための仕組みです。フォルダの中に .py
ファイル(モジュール)を入れたり、さらにその中にサブフォルダ(サブパッケージ)を作ったりすることで、関連するモジュールをまとめて整理できます。
例えば、Web開発用の大きなライブラリは、認証機能のモジュール、データベース連携のモジュール、テンプレート処理のモジュールなどが、それぞれ別のフォルダ(パッケージやサブパッケージ)に格納されていることが多いです。
パッケージの中のモジュールをインポートする場合は、フォルダの階層構造を .
(ドット) でつないで指定します。
“`python
例えば、my_package というパッケージがあり、
その中に utils というサブパッケージ、
その中に helper.py というモジュールがある場合
my_package/utils/helper.py をインポート
import my_package.utils.helper
モジュール内の関数を呼び出す
my_package.utils.helper.some_function()
または、特定の関数だけをインポート
from my_package.utils.helper import another_function
another_function()
“`
データ分析で使う pandas
や、機械学習で使う sklearn
(scikit-learn) といったものも、実際には多くのモジュールやサブパッケージから構成される大きなパッケージです。
モジュールやパッケージを使うことで、ゼロから全てを作るのではなく、他の人が作った優れたコードの力を借りて、効率的に開発を進めることができるようになります。
12. これからの学習に向けて
この記事を通して、Pythonがどんな言語で、基本的な使い方や文法、そして何ができるのか、大まかに理解できたことと思います。しかし、これはあくまでPython学習のほんの始まりに過ぎません。
ここからさらにPythonをマスターしていくために、いくつかの学習ステップとおすすめのリソースを紹介します。
次に何を学ぶか?
基本的な文法(変数、データ型、演算子、条件分岐、繰り返し、リスト、辞書、関数、モジュール)を理解したら、次はそれらを組み合わせて少し複雑なプログラムを作成する練習をしましょう。
具体的な学習テーマとしては、以下のようなものがあります。
- エラー処理 (例外処理): プログラム実行中に予期しない問題が発生した場合(例: 0で割る、存在しないファイルを開こうとするなど)に、プログラムが停止せず適切に対処する方法(
try-except
文など)。 - ファイル操作: テキストファイルやCSVファイルなどの読み書き。
- クラスとオブジェクト (オブジェクト指向プログラミング): より複雑なプログラムを効率的に設計・開発するための考え方(いきなり全てを理解する必要はありませんが、Pythonでは頻繁に出てきます)。
- より高度なデータ構造: リスト内包表記、辞書内包表記など、リストや辞書を簡潔に生成する方法。
- 特定の分野のライブラリ: 興味のある分野(Web開発、データ分析、自動化など)に関連する主要なライブラリの使い方を学ぶ。
おすすめの学習リソース
- Python公式チュートリアル: Pythonの公式サイトに掲載されている公式のチュートリアルです。網羅的で正確ですが、初心者には少し難しく感じるかもしれません。辞書的に使うのがおすすめです。(日本語訳もあります)
https://docs.python.org/ja/3/tutorial/ - Progate (プロゲート), ドットインストール: Web上で手軽にプログラミングを体験できるサービスです。ゲーム感覚で学べるため、最初のステップとして非常に分かりやすいです(有料コンテンツあり)。
- Udemy (ユーデミー), Coursera (コーセラ) など: オンライン学習プラットフォームです。Python入門から専門分野まで、様々なレベルの動画コースが豊富にあります(有料)。
- 書籍: 自分のペースで体系的に学びたい場合は、初心者向けのPython入門書が多数出版されています。
- Qiita (キータ), Zenn (ゼン) など: 日本の技術ブログ・情報共有サイトです。具体的なコード例や、特定のライブラリの使い方などが豊富に掲載されています。
- YouTube: Pythonの解説動画チャンネルもたくさんあります。視覚的に学びたい場合に便利です。
一つのリソースにこだわる必要はありません。複数のリソースを組み合わせたり、自分に合った学習方法を見つけることが大切です。
実践の重要性
プログラミングは、座学で知識を詰め込むだけでは身につきません。実際に手を動かしてコードを書くこと、そしてエラーに直面し、それを解決する経験が何よりも重要です。
- この記事で紹介したコードを自分で書いてみる: 写経(コードを書き写す練習)は非常に効果的です。
- 簡単な課題に挑戦する: 「1から100までの合計を計算する」「入力された数値が偶数か奇数か判定する」「簡単な電卓プログラムを作る」など、身近な課題をプログラムで解決してみましょう。
- 小さなツールを作ってみる: 日常の退屈な作業(例: ファイル整理、簡単な計算など)を自動化するプログラムを書いてみる。
エラーは避けられないものです。エラーが出たら、メッセージをよく読んで、何が原因かを考え、解決策を検索してみましょう。この「エラーと向き合う」経験が、プログラミングスキルを向上させます。
最初は難しく感じるかもしれませんが、諦めずに続けていくことが大切です。少しずつでも毎日コードを書く時間を設けるなど、習慣にできると良いでしょう。
13. まとめ:Python学習の旅は始まったばかり
この記事では、Pythonがどのようなプログラミング言語であるか、その特徴、なぜ初心者におすすめなのか、そして基本的な文法や考え方について、約5000語というボリュームで解説しました。
- Pythonは、シンプルで読みやすい文法を持ち、初心者にとって非常に学びやすい言語です。
- Web開発、データ分析、AI、自動化など、幅広い分野で活躍する汎用性の高い言語です。
- 変数、データ型、演算子、条件分岐、繰り返しといった基本的な文法要素を理解することが第一歩です。
- リスト、タプル、辞書、集合などのデータ構造を使うことで、複数のデータを効率的に管理できます。
- 関数を使うことで、コードを再利用し、プログラムを分かりやすく保つことができます。
- モジュールやパッケージを利用することで、他の人が作った便利な機能を自分のプログラムに取り込むことができます。
これらはPythonの機能のごく一部ですが、ここまでの内容を理解できれば、簡単なプログラムを自分で書くための基礎はしっかりと身についているはずです。
プログラミング学習は、自転車の乗り方や楽器の演奏に似ています。最初はぎこちなくても、繰り返し練習するうちに、自然とできるようになっていきます。
この記事が、あなたのPython学習の旅の素晴らしい出発点となることを願っています。
さあ、自信を持って、次のステップに進みましょう! あなたのアイデアをPythonで形にする日を楽しみにしています!