「Pythonの基礎 構文、データ型、制御構造」
Python基礎:構文、データ型、制御構造
Pythonを使ってプログラミングを学びたい初心者ですか?もしそうなら、この初心者向けのチュートリアルは、言語の基礎を学ぶために役立ちます。
このチュートリアルでは、Pythonの英語に親しみやすい文法について紹介します。また、Pythonで異なるデータ型、条件文、ループを扱う方法も学びます。
既にPythonが開発環境にインストールされている場合は、Python REPLを起動してコードを実行してください。または、インストールをスキップしてすぐにコーディングを始めたい場合は、Google Colabにアクセスしてコードを実行することをおすすめします。
- A12研究者は、人工衛星画像から生成された世界の地理空間データを探索するための新しいAIプラットフォーム「Satlas」を紹介しました
- Rとbrmsを用いた学校卒業者の結果のベイズ比較
- ユーロトリップの最適化:遺伝的アルゴリズムとGoogle Maps APIによる巡回セールスマン問題の解決
こんにちは、Python!
Pythonでクラシックな「こんにちは、世界!」プログラムを書く前に、言語について少し説明します。Pythonは解釈言語です。これはどういう意味でしょうか?
どのプログラミング言語でも、書いたソースコードは機械語に変換する必要があります。コンパイル言語(CやC++など)では、プログラムを実行する前に全体の機械語が必要ですが、インタプリタはソースコードを解析し、実行時に解釈します。
Pythonスクリプトを作成し、以下のコードを入力して実行してください:
print("こんにちは、世界!")
「こんにちは、世界!」を表示するために、`print()`関数を使用しました。Pythonには多くの組み込み関数がありますが、この超簡単な例では、”こんにちは、世界!”は文字のシーケンスです。Pythonの文字列は、シングルクォートまたはダブルクォートで囲まれたものです。したがって、任意のメッセージ文字列を表示するには、`print(“<message_string>”)`を使用します。
ユーザー入力の読み込み
さらに進んで、`input()`関数を使用してユーザーから入力を受け取る手順を確認しましょう。ユーザーに入力する内容を示すプロンプトを常に表示するようにしましょう。
以下は、ユーザーの名前を入力として受け取り、挨拶する簡単なプログラムです。
コメントは、コードの読みやすさを向上させるために、ユーザーに追加のコンテキストを提供します。Pythonの単一行コメントは#から始まります。
以下のコードスニペットでは、文字列の前に`f`が付いていることに注意してください。このような文字列は、フォーマットされた文字列またはf文字列と呼ばれます。f文字列では、変数の値を置き換えるために、変数の名前を中括弧で囲んで指定します:
# ユーザー入力を取得
user_name = input("名前を入力してください:")
# ユーザーに挨拶する
print(f"こんにちは、{user_name}さん!お会いできてうれしいです!")
プログラムを実行すると、まず入力を求められ、その後に挨拶メッセージが表示されます:
名前を入力してください:Bala
こんにちは、Balaさん!お会いできてうれしいです!
次は、Pythonで変数とデータ型について学びましょう。
変数とデータ型
どのプログラミング言語でも、変数は情報を格納するコンテナのようなものです。これまでに書いたコードでは、既に`user_name`という変数を作成しています。ユーザーが名前(文字列)を入力すると、その値が`user_name`変数に格納されます。
基本的なデータ型
Pythonの基本的なデータ型について見ていきましょう:`int`(整数)、`float`(浮動小数点数)、`str`(文字列)、`bool`(真偽値)。単純な例を使用して説明します:
整数(`int`):整数は小数点を持たない数です。次のように整数を作成し、変数に割り当てることができます:
age = 25
discount= 10
これらは変数に値を割り当てる代入文です。Cなどの言語では、変数を宣言する際にデータ型を指定する必要がありますが、Pythonは動的型付け言語です。値からデータ型を推論します。そのため、変数にはまったく異なるデータ型の値を再代入することができます:
number = 1
number = 'one'
Pythonでは、`type`関数を使用して任意の変数のデータ型を確認できます:
number = 1
print(type(number))
`number`は整数です:
出力 >>>
今、`number`に文字列の値を代入しています:
number = 'one'
print(type(number))
出力 >>>
浮動小数点数(`float`):浮動小数点数は小数点を持つ実数を表します。次のように`float`データ型の変数を作成できます:
height = 5.8
pi = 3.14159
数値データ型に対して加算、減算、床除算、累乗など、さまざまな演算を実行できます。以下にいくつかの例を示します:
# 数値変数を定義
x = 10
y = 5
# 加算
add_result = x + y
print("加算:", add_result) # 出力: 15
# 減算
sub_result = x - y
print("減算:", sub_result) # 出力: 5
# 乗算
mul_result = x * y
print("乗算:", mul_result) # 出力: 50
# 除算(浮動小数点数の結果)
div_result = x / y
print("除算:", div_result) # 出力: 2.0
# 整数除算(床除算)
int_div_result = x // y
print("整数除算:", int_div_result) # 出力: 2
# 剰余(割り算の余り)
mod_result = x % y
print("剰余:", mod_result) # 出力: 0
# 累乗
exp_result = x ** y
print("累乗:", exp_result) # 出力: 100000
文字列(`str`):文字列はシングルクォートまたはダブルクォートで囲まれた文字のシーケンスです。
name = "Alice"
quote = 'Hello, world!'
ブール値(`bool`):ブール値は`True`または`False`を表し、条件の真偽を示します。
is_student = True
has_license = False
Pythonの異なるデータ型を使用する柔軟性により、データを効果的に保存し、さまざまな操作を行うことができます。
これまで学んだすべてのデータ型を組み合わせた例を次に示します:
# 異なるデータ型を一緒に使用する
age = 30
score = 89.5
name = "Bob"
is_student = True
# スコアが合格基準を超えているかどうかをチェック
passing_threshold = 60.0
is_passing = score >= passing_threshold
print(f"{name=}")
print(f"{age=}")
print(f"{is_student=}")
print(f"{score=}")
print(f"{is_passing=}")
以下は出力例です:
出力 >>>
name='Bob'
age=30
is_student=True
score=89.5
is_passing=True
基本的なデータ型を超えて
例えば、教室の学生に関する情報を管理しているとします。学生ごとに変数を繰り返し定義するよりも、すべての学生の情報を格納するためにコレクションを作成する方が便利です。
リスト
リストは順序付けられたアイテムのコレクションであり、角かっこで囲まれています。リストのアイテムはすべて同じデータ型または異なるデータ型にすることができます。リストは可変です。つまり、作成後に内容を変更することができます。
ここでは、`student_names`に学生の名前が含まれています:
# リスト
student_names = ["Alice", "Bob", "Charlie", "David"]
タプル
タプルはリストと似た順序付けられたコレクションですが、イミュータブルであり、作成後にその内容を変更することはできません。
例えば、`student_scores` というイミュータブルなコレクションを作成したいとします。これには学生の試験の得点が含まれます。
# タプル
student_scores = (85, 92, 78, 88)
辞書
辞書はキーと値のペアのコレクションです。辞書のキーは一意でなければならず、それに対応する値にマップされます。辞書は変更可能であり、特定のキーに情報を関連付けることができます。
ここでは、`student_info` に各学生の名前と得点の情報をキーと値のペアとして含めています。
student_info = {'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}
しかし、Pythonでは辞書を作成するためのよりエレガントな方法があります。
まもなく新しい概念、辞書内包表記を学びます。最初は理解できなくても心配はいりません。後で学び、取り組むことができます。
しかし、内包表記は非常に直感的に理解できます。`student_info` 辞書に学生の名前をキーとし、それに対応する試験の得点を値とする場合、次のように辞書を作成できます。
# 辞書内包表記を使用して student_info 辞書を作成する
student_info = {name: score for name, score in zip(student_names, student_scores)}
print(student_info)
注意してください。`zip()` 関数を使用して、`student_names` リストと `student_scores` タプルの両方を同時に反復処理しています。
出力 >>>
{'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}
この例では、辞書内包表記は `student_names` リストから各学生の名前を取り出し、`student_scores` タプルから対応する試験の得点を取り出して、名前をキーとしてスコアを値とする `student_info` 辞書を作成しています。
プリミティブなデータ型といくつかのシーケンス/イテラブルについて理解しているので、次のディスカッションの次の部分に進みましょう:制御構造。
Pythonの制御構造
Pythonスクリプトを実行すると、コードの実行はスクリプト内で発生し、スクリプト内で発生する順序で逐次的に行われます。
時には、特定の条件に基づいて実行のフローを制御するためにロジックを実装したり、イテラブル内のアイテムを処理するためにループを使用したりする必要があります。
if-else文が分岐と条件付き実行をサポートする方法を学びます。また、ループを使用してシーケンスを反復処理し、ループ制御文であるbreakとcontinueを学びます。
If文
特定の条件が真の場合にのみブロックのコードを実行する必要がある場合、`if` 文を使用できます。条件が偽の場合、ブロックのコードは実行されません。
次の例を考えてみましょう:
score = 75
if score >= 60:
print("おめでとうございます!試験に合格しました。")
この例では、`if` ブロック内のコードは、`score` が60以上の場合にのみ実行されます。`score` は75なので、「おめでとうございます!試験に合格しました。」というメッセージが表示されます。
出力 >>> おめでとうございます!試験に合格しました。
If-else条件文
`if-else` 文を使用すると、条件が真の場合に1つのブロックのコードを実行し、条件が偽の場合には別のブロックのコードを実行できます。
テストスコアの例を作りましょう:
score = 45
if score >= 60:
print("おめでとうございます!試験に合格しました。")
else:
print("申し訳ありませんが、試験に合格できませんでした。")
ここでは、`score`が60未満の場合、`else`ブロック内のコードが実行されます:
出力 >>> 申し訳ありませんが、試験に合格できませんでした。
If-elif-else ラダー
`if-elif-else`文は、複数の条件をチェックする場合に使用されます。複数の条件をテストし、最初に真となる条件に対応するコードブロックを実行できます。
`if`文とすべての`elif`文の条件が偽と評価される場合、`else`ブロックが実行されます。
score = 82
if score >= 90:
print("素晴らしい!Aを取得しました。")
elif score >= 80:
print("お疲れ様です!Bを取得しました。")
elif score >= 70:
print("悪くないです!Cを取得しました。")
else:
print("改善が必要です。Fを取得しました。")
この例では、プログラムは`score`を複数の条件と比較します。最初に真となる条件のブロックが実行されます。`score`が82であるため、以下の出力が得られます:
出力 >>> お疲れ様です!Bを取得しました。
入れ子のIf文
入れ子の`if`文は、他の条件内で複数の条件をチェックする必要がある場合に使用されます。
name = "Alice"
score = 78
if name == "Alice":
if score >= 80:
print("素晴らしいです、Alice!Aを取得しました。")
else:
print("頑張っています、Alice!これからも続けてください。")
else:
print("頑張っていますが、このメッセージはAliceさん向けです。")
この例では、入れ子の`if`文があります。まず、プログラムは`name`が”Alice”かどうかをチェックします。真の場合、`score`をチェックします。`score`が78であるため、内側の`else`ブロックが実行され、”頑張っています、Alice!これからも続けてください”と表示されます。
出力 >>> 頑張っています、Alice!これからも続けてください。
Pythonには、コレクションの反復処理や繰り返しタスクの実行に使用できる複数のループ構造があります。
Forループ
Pythonの`for`ループは、既存の反復可能オブジェクトを反復処理するための簡潔な構文を提供します。次のように`student_names`リストを反復処理できます:
student_names = ["Alice", "Bob", "Charlie", "David"]
for name in student_names:
print("学生:", name)
上記のコードは次のように出力されます:
出力 >>>
学生: Alice
学生: Bob
学生: Charlie
学生: David
Whileループ
条件が真の間、一部のコードを実行したい場合は、`while`ループを使用できます。
同じ`student_names`リストを使用しましょう:
# 既存の反復可能オブジェクトとwhileループの使用
student_names = ["Alice", "Bob", "Charlie", "David"]
index = 0
while index < len(student_names):
print("学生:", student_names[index])
index += 1
この例では、学生の名前が含まれる`student_names`リストがあります。`while`ループを使用して、`index`変数を追跡しながらリストを反復処理します。
インデックスがリストの長さよりも小さい間、ループは続きます。ループの中で、各学生の名前を印刷し、次の学生に移るためにインデックスを増やします。リストの長さを取得するために `len()` 関数を使用することに注意してください。
これは、リストを繰り返し処理するために `for` ループを使用する場合と同じ結果を得ることができます:
出力 >>>
学生: アリス
学生: ボブ
学生: チャーリー
学生: デイビッド
リストが空になるまで要素をポップする `while` ループを使用しましょう:
student_names = ["アリス", "ボブ", "チャーリー", "デイビッド"]
while student_names:
current_student = student_names.pop()
print("現在の学生:", current_student)
print("すべての学生が処理されました。")
リストのメソッド `pop` はリストに存在する最後の要素を削除して返します。
この例では、`while` ループは `student_names` リストに要素がある限り続きます。ループの中で、`pop()` メソッドを使用してリストから最後の要素を削除して返し、現在の学生の名前を印刷します。
すべての学生が処理されるまでループが続き、ループの外側に最終的なメッセージが印刷されます。
出力 >>>
現在の学生: デイビッド
現在の学生: チャーリー
現在の学生: ボブ
現在の学生: アリス
すべての学生が処理されました。
`for` ループは、リストのような既存のイテラブルを繰り返し処理する場合に一般的により簡潔で読みやすいです。しかし、`while` ループは、ループの条件が複雑な場合により制御を提供することができます。
ループ制御文
`break` はループを途中で終了させ、`continue` は現在の繰り返し処理の残りをスキップして次の繰り返し処理に移ります。
以下に例を示します:
student_names = ["アリス", "ボブ", "チャーリー", "デイビッド"]
for name in student_names:
if name == "チャーリー":
break
print(name)
名前がチャーリーのときにループが終了し、次の出力が得られます:
出力 >>>
アリス
ボブ
do-whileループの振る舞いをエミュレートする
Pythonには他のプログラミング言語のような組み込みの `do-while` ループはありません。ただし、`while` ループと `break` 文を使用して同じ振る舞いを実現することができます。Pythonで `do-while` ループのような振る舞いをエミュレートする方法は次のとおりです:
while True:
user_input = input("終了するには 'exit' と入力してください: ")
if user_input == 'exit':
break
この例では、ユーザーが ‘exit’ と入力するまでループは無限に続きます。条件は最初に `True` に設定されているため、ループは少なくとも1回は実行され、その後、ユーザーの入力がループ内でチェックされます。ユーザーが ‘exit’ を入力すると、`break` 文が実行されてループが終了します。
以下にサンプルの出力を示します:
出力 >>>
終了するには 'exit' と入力してください: こんにちは
終了するには 'exit' と入力してください: こんばんは
終了するには 'exit' と入力してください: さようなら
終了するには 'exit' と入力してください: 頑張って!
終了するには 'exit' と入力してください: exit
このアプローチは、他の言語の `do-while` ループと似ており、ループ本体が条件がチェックされる前に少なくとも1回実行されることが保証されています。
まとめと次のステップ
このチュートリアルに沿って問題なくコーディングできたことを願っています。Pythonの基礎を理解したので、学んだすべての概念を適用していくつかの非常にシンプルなプロジェクトをコーディングする時間です。インド出身の開発者兼技術ライターのBala Priya Cさんが、数学、プログラミング、データサイエンス、コンテンツ作成の交差点で働くことが好きです。彼女の関心と専門知識の範囲にはDevOps、データサイエンス、自然言語処理などが含まれます。彼女は読書、執筆、コーディング、そしてコーヒーを楽しんでいます!現在、彼女はチュートリアル、ハウツーガイド、意見記事などを執筆することによって開発者コミュニティと彼女の知識を共有する学習中です。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles