PR

Python基本構文をマスターする: 初心者のためのステップバイステップ

python
記事内に広告が含まれています。
この記事について

Pythonプログラミングに必要な基本構文を学びます。

数値

数値演算と演算子

まず、Pythonを使って数値演算を行ってみましょう。

この記事ではJupyter Notebookを使って進めてます。

まずは以下のコードを実行しましょう。

10 + 10

すると、次のような値が得られます。

20

note: "+" の前後には空白を入れなくてもコードは正しく実行できますが、空白を入れた方がコードが読みやすくなります。

Pythonでは、基本的な四則演算(足し算、引き算、掛け算、割り算)をはじめ、さまざまな数値演算が可能です。具体的な例を交えながら理解していきましょう。

足し算

足し算の例です。

a = 5
b = 3
result = a + b
print(result)

Output:

8

この例では、変数 ab の値を足し合わせ、結果を result に代入しています。その後、print文を使用して結果を表示しています。

引き算

引き算の例です。

a = 8
b = 3
result = a - b
print(result)

Output:

5

この例では、変数 a から b を引き、結果を result に代入しています。

掛け算

どんどん進みましょう!次は掛け算です。

a = 4
b = 6
result = a * b
print(result)

この例では、変数 ab の値を掛け合わせ、結果を result に代入しています。

Output:

24

掛け算は、"×"ではなく、"*"(アスタリスク)です。さらにアスタリスクが2つ付いた演算子 "**"はべき乗を意味します。

a = 4
b = 6
result = a ** b
print(result)

Output:

4096

割り算

割り算の例です。

a = 10
b = 2
result = a / b
print(result)

Output:

5.0

この例では、変数 ab で割り、結果を result に代入しています。結果が小数点を含む場合、Pythonでは浮動小数点数として表示されます。

これらが基本的な四則演算です。

「+」、「-」、「*」、「/」は「演算子」と呼ばれます。

これらの基本的な四則演算以外にも、 「//」は整数除算や「%」 は剰余演算子と呼ばれる演算子もあります。

整数除算

整数除算は、割り算の結果を整数部分のみで返す演算です。「//」 演算子を使用します。

a = 10
b = 3
result = a // b
print(result)

Output:

3

この例では、変数 a を変数 b で割り、結果を整数部分のみで取得しています。結果が小数点以下を切り捨てられています。

剰余演算

剰余演算は、割り算の余りを求める演算です。「%」 演算子を使用します。

a = 10
b = 3
result = a % b
print(result)  # 出力: 1

Output:

1

この例では、変数 a を変数 b で割った余りを取得しています。結果は余りが1であることを示しています。

これらの演算子を組み合わせることで、より複雑な数学的な操作を行うことができます。例えば、ある数が偶数か奇数かを判定する際に剰余演算がよく利用されます。例えば:

# 偶数か奇数かを判定する例
number = 15
if number % 2 == 0:
    print("偶数")
else:
    print("奇数")

この例では、変数 number が2で割り切れるかどうかで偶数か奇数かを判定しています。 == は等しいかどうかを判定する演算子です。

実数(浮動小数点数)

小数点を持つ数値は実数(浮動小数点数)と呼ばれ、Pythonの内部処理では浮動小数点数を使います。

桁数の多い小数点を扱いたい場合は、指数表記(m×er)が使えます。

Jupyter Notebookで以下を確認してください。

5.224e+6

Output:

5224000.0

eは10と同じ意味である。つまり、5.224e+6は5.224×106となる。

複素数

複素数とは、実数に虚数を加えたものである。これは数学の勉強ではないので、複素数の詳細は省きます。

Jupyter Notebookで以下を実行してみてください。

21+3j

Output:

(21+3j)

複素数は特殊な数なので、括弧で囲まれます。

整数・実数・複素数の変換

整数から実数への変換、整数・実数から複素数への変換は非常に簡単で、以下の関数を使うだけでよい。

タイプ関数
整数int()
実数float()
複素数complex()

Jupyter Notebookで以下をチェックしてみよう。

整数へ変換

int(123.45)

Output:

123

実数へ変換

float(567)

Output:

567.0

複素数へ変換

complex(89)

Output:

(89+0j)

文字列

多くのプログラミングの教科書では、冒頭に "Hello, world!"という文章を例文に使用しています。 この"Hello, world!"のようなデータをPythonでは「文字列」として扱います。

文字列を扱うときは、以下のように

'文字列' (シングルクォーテーション)

"文字列" (ダブルクォーテーション)

で囲みます。

print("Hello, world!")

Output:

Hello, world!

Pythonでは、シングルクォーテーション(')で囲まれた文字列とダブルクォーテーション(")で囲まれた文字列の間に明確な違いはないことに注意してください。

引用符を文字列として表示する

しかし、シングルクォーテーションやダブルクォーテーションを文字列として表示したい場合は注意が必要です。例えば、以下のコードを実行するとエラーとなります。

print("Hello, "Python" world!")

なぜなら、このエラーは文字列内でダブルクォーテーションが正しく使用されていないことが原因だからです。このエラーは、二重引用符で囲まれた文字列の中に二重引用符があるために起こります。具体的にはPythonインタプリターは、まず "Hello "で始まる文字列を解釈し、次に "Python "で始まる別の文字列に遭遇し、どのように続行すればよいのかわからなくなるからです。

引用符を文字列として表示したい場合は、以下のどちらかを行います。

① 別々の引用符で囲む

ダブルクォーテーションを文字列として表示させたい場合は、文字列全体をシングルクォーテーションで囲みます。逆に、シングルクォーテーションを文字列として表示させたい場合は、ダブルクォーテーションで囲みます。 つまり、ダブルクォーテーションで囲まれた文字列の中にシングルクォーテーションを使うか、あるいはその逆を行うことで、Pythonインタプリタを混乱させずに済みます。

ダブルクォーテーションを文字列として表示させたい場合

print('Hello, "world"')

Output:

Hello, “world”

シングルクォーテーションを文字列として表示させたい場合

print("Hello, 'world'")

Output:

Hello, ‘world’

② エスケープシーケンスを使う

コード中で引用符の前にバックスラッシュ (Windowsの場合は ¥)を付けると、それはエスケープシーケンスと呼ばれます。 エスケープシーケンスとは、Pythonに次の文字を特別な方法で扱うように指示する特別なコードのようなものです。 この場合、引用符の前のバックスラッシュはPythonに対して、引用符を文字列の終わりとして解釈しないようにというシグナルです。

つまり、Pythonはコード内で混乱を引き起こす代わりに、文字列内の引用符はテキストの一部であり、文字列自体の終わりではないと理解します。これにより、コードの構文を乱すことなく特定の文字を含めることができます。

print("Hello, \"Python\" world!")

Output:

Hello, "Python" world!

文字列を改行して表示する。

文字列の途中で改行を表示するには、以下のテクニックを使う必要がある。

① エスケープ・シーケンスを使う

\n (Windowsの場合)は改行として扱われる。

print("Hello, \nworld")

Output:

Hello,
world

② ヒアドキュメントを使う

テキストを3組の引用符("" ... """)で囲むと、Pythonで改行のために特別な記号を使う心配がなくなります。これは、追加の書式を扱うことなく複数行のテキストを含めるより簡単な方法です。

print("""
Hello,
world!
""")

Hello,
world!

文字列の連結と繰り返し

数値演算では、+は加算演算子でしたね。例えば以下の例では足し算が実行されています。

123 + 456

Output:

579

しかし、文字列の中で+を使うと、文字列が連結されます。例えば、

"123" + "456"

Output:

‘123456’

同様に、

"456" + "123"

Output:

‘456123’

123 "と "456 "は連結されて "123456 "となり、"456 "と "123 "を連結すると "456123 "となります。つまり、123(数字)と "123 "()文字列は同じものではないので注意しよう。

同様に、乗算のように*演算子を使って書くと、文字列が繰り返されます。

"123" * 3

Output:

‘123123123’

数値と文字列の変換

繰り返しになりますが、123という数値と "123 "という文字列は同じではありません。 しかし、数値を文字列として扱った方が実行しやすい操作もあります。

数値を文字列に変換する。

数値を文字列に変換するには、str()関数を使う。str()の括弧の中には、文字列に変換したい数値を入れます。

number = 42
string_to_number = str(number)
type(string_to_number)

Output:

str

Pythonでは、type()関数は与えられたオブジェクトや変数のデータ型を確認するために使用されます。出力結果は、int、float、str、list、tuple などの標準的な組み込み型のいずれかになります。

上の例では、type(string_to_number)は変数string_to_numberのデータ型である文字列(str)を返しています。

文字列を数値に変換する。

逆に、文字列形式の項目を数値に戻したい場合は、int()を使います。

string_number = "42"
string_to_number = int(string_number)
type(string_to_number)

Output:

int

上の例では、文字列 "42"はint()を使って数値に変換されていることが確認できましたね。

変数

次に変数について説明します。

変数とは何か?

変数は、データの値を格納するためのコンテナです。他のプログラミング言語と異なり、Pythonには変数を宣言するコマンドがありません。変数は、最初に値を代入した瞬間に作成されます。

早速、Jupyter NotebookでPythonでの変数の使い方を確認してみましょう。

a = 5
b = 4
c = a + b
print(c)

Output:

9

一行ずつ分解してみよう。

a = 5

ここでは変数aを定義し、変数aに整数2を代入しています。

数学では、記号 =(イコール) は左辺と右辺が等しいことを表します。しかしPythonでは、=は "右辺の内容を左辺に代入する "という意味で使われます。Pythonで特定の変数にデータを代入するには、

"変数名=データ"

と表現します。

なお、a = 5という処理は、単に変数に数値を代入しているだけなので、「すぐに何か結果が表示される」わけではありません。

次に、b = 4では、bという変数を定義し、整数4を代入しています。これも単なる代入処理なので、結果は表示されません。さらに、

c = a + b

a + bは、"変数aの内容を変数bの内容に加える"処理です。 c=a+bなので、a+bの加算結果が変数cに代入されることになります。ここで、計算処理は行われていますが、計算結果は変数に代入されるだけなので、表示するためのコードが必要になってきます。

print(c)

cの中身をprint()すると9になる。

変数の内容を表示したい場合は、このようにprint(変数名)と書けばOKです。変数名は引用符(”や’)で囲む必要はありません。

もし、以下のように変数cを引用符で囲むと、「文字列c」として扱われます。

print("c")

Output:

c

上記の例は変数間の計算ですが、変数と数値を足し合わせることもできます。

d = 5
e = d + 3
print(e)

Output:

8

変数名の注意

Pythonでコードを書くとき、変数には好きな名前をつけることができます。例えば、a, b, c のような一文字を使っても問題ありませんし、エラーになることもありません。

しかし、より本格的なコードを書くときには、その変数が何のためにあるのかが明確になるような名前を使うのがよいでしょう。例えば、アドレスを格納する変数があれば、addressと名付け、年齢を格納する変数ならageと名前を付けると良いかと思います。

変数名に複数の単語を使う必要がある場合、Pythonはlast_nameやfirst_nameのようにアンダースコアで単語をつなげることをおすすめします。これはスネークケースと呼ばれます。

ifやwhileのような予約語はPythonでは特別な意味を持つので、変数名として使わないように注意してください。もしコードでエラーが発生したら、予約語を使っていないか再確認してください。

Python 3.8.12系の場合、予約語は、全部で35個あります。

FALSE, await, else, import, pass
None, break, except, in, raise
TRUE, class, finally, is, return
and, continue, for, lambda, try
as, def, from, nonlocal, while
assert, del, global, not, with
async, elif, if, or, yield

同じ変数を上書きする

既にデータが格納されている変数を新しいデータで上書きすることも可能です。

a = 100
a = a + 100
print(a)

Output:

200

上の例では、まず変数aに100が代入され、次に「変数aの内容(整数100)をaに100を加算して上書きする」処理が行われます。最終的に変数aの中身は最終的に200に変わります。

変数の破棄

変数が不要になり、その変数を破棄したい場合は、del()コマンドを使います。

print(a)

Output:

200

変数(a)を削除する

del(a)
print(a)

Output:

NameError: name 'variable name' is not defined

上に示したように、del() によって破棄された "変数を参照しようとすると、NameError: name 'variable name' is not defined というエラーが発生します。

変数のデータ型

Pythonで変数の "データ型 "というのは、"どんなデータを保持しているか "ということです。 print(変数名)を使っても実際のデータを見ることはできますが、データの型だけを知りたい場合は、type()というコマンドがあります。

a = 123
b = 123.456
c = "abcdefg"
d = 7 + 4j

上の例では、変数aに整数123、bに小数123.456、cに文字列 "abc"、dに複素数(7 + 4j)を設定しています。

type(a)

int

type(b)

float

type(c)

str

type(d)

complex

type()関数を使ってそれぞれをチェックすると、aはint、bはfloat、cはstr、dはcomplexであることがわかります。

変数を別の型のデータで上書きする。

プログラミング言語によっては、あるデータを与えるとその変数が特定の「データ型」に固定されるものもありますが、Pythonはより柔軟に対応が可能です。つまり、変数に別の型を代入することで、変数が持つデータの型を変更することができます。

a = 123
type(a)

int

a = "abc"
type(a)

str

上の例では、変数aは数字123を格納していましたが、その後、"abc "という単語を格納するように変更しました。この変更の前後でtype(a)を使ってみると、int型からstr型に変化していますね。

演算子

Pythonには様々な演算を行うための演算子があります。ここではそれらをまとめます。

数値演算子

数値のところで習いましたが、復習しておきましょう。

オペレーターの種類内容
+足し算
引き算
*掛け算
/割り算
//割り算と小数点以下切り捨て
%割り算の余りを求める
**

文字列演算子

文字列を+や*で処理するのは、数値の加算や乗算とは異なることも学びましたね。以下にその内容をまとめておきます。

オペレーターの種類内容
+文字列連結
*文字列を指定回数繰り返す

代入演算子

変数の代入に使われる演算子=は既に学習済みです。また、変数の内容を上書きできることも直前の内容で学びましたね。

Pythonには”+=”という代入演算子もあります。

a = 1
a += 1
print(a)

Output:

2

Pythonでは、”a = a + 1”と”a += 1”は、どちらもまったく同じことをします。

a += 1とは、
同じことをより短く簡潔に表現する方法です。a = a + 1のショートカットのようなものだと考えて下さい。 「現在のaの値に1を加え、その結果をaに戻す」という意味です。

この種の演算子(+=、-=、*=、/=)はとても便利で、あらゆる種類の数学演算に利用できますし、コードを短くし、読みやすくします。

オペレーターの種類使用例内容
+=a += ba + b を a に戻す
-=a -= baからbを引いてaに戻す
*=a *= baにbを掛けてaに戻す
/=a /= baをbで割るとaに戻る
//=a //= baの中身をbで割り、小数点以下を切り捨てた数をaに代入する。
%=a %= baの内容をbで割った残りをaに戻す。
**=a **= bバックの中身の正方形を

論理値と比較演算子

Pythonのデータ型の1つに論理値というものがあります。これはTrueかFalseにしかないデータ型です。

文字列のように見えますが、文字列ではありません。引用符で囲まずに True または False と記述します。この boolean 値は int() で数値に変換でき、True が 1、False が 0 となります。

int(True)

Output:

1
int(False)

Output:

0

次に比較演算子について解説します。例えば、

age = 30

と定義します。

age > 15

Output:

True

この場合、ageに格納されている値が15より大きいかどうかをチェックしています。 この場合、ageは30ですから、確かに15より大きいので、条件は満たされ、Trueとなります。

では、ageの値を変更してみます。

age = 5

ここで、ageの値を18に変更し、再チェックしてみます。

age > 15

Output:

False

ageに格納された値が15より大きいかどうかを再度チェックしてみると、今度は新しい値(5)であるため、条件は満たされず、Falseとなりました。

”>”のような演算子は比較演算子と呼ばれます。比較演算子は、コードの中で値を比較し、判断するのに役立ちます。ここでは一般的なものをいくつか紹介します:

演算子内容
>a > baがbよりも大きいかどうか
<a < baがbより小さいかどうか。
>=a >= baがb以上かどうか
<=a <= baがb以下かどうか
==a == baがbと等しいかどうか
!=a != baがbと異なるかどうか

論理演算子

Pythonでは、「20歳以上かつ65歳以下」であるかどうかをチェックするような複数の条件を設定する必要がある場合、条件を組み合わせるのに役立つ論理演算子が用意されています。主な論理演算子は3つあります:

演算子内容
andage >= 20 and age <= 65すべての条件が満たされた場合のみTrue
orage >= 20 or age <= 65少なくとも1つの条件が満たされればTrue
notnot(a >= 20)指定された式が満たされれば偽、満たされなけれTrue

and: この演算子は2つの条件を組み合わせるために使われ、式全体が真になるためには両方の条件が真でなければなりません。この例の文脈では、andを使うことで、ある人が20歳以上と65歳以下という両方の条件を満たしているかどうかをチェックすることができます。

age = 30
result = age >= 20 and age <= 65
result

Output:

True

or: or演算子は2つの条件を組み合わせるのに使われ、少なくとも1つの条件がTrueであれば、式全体はTrueになる。この例では、20歳以上か65歳以下かをチェックすることができます。例

age = 18
result = age >= 20 or age <= 65
result

Output:

True

not: not演算子は単項演算子で、条件の結果を否定する。条件がTrueの場合、notはそれをFalseにします。

age = 25
result = not (age < 20)
result

Output:

True

これらの論理演算子は、単純な条件を組み合わせて複雑な要件をコードで表現するのに役立ち、複数の要素に基づいて判断を下すことができます。

また、Pythonでは、記号を使って論理演算を表すことができます。記号&は "and "を、記号|は "or "を置き換えることができます。

例えば、(age >= 20) & (age <= 65)は、誰かが20歳以上かつ65歳以下であるかどうかをチェックし、(age >= 20) | (age <= 65)は、誰かが20歳以上か65歳以下かをチェックします。

ただし、注意すべきポイントがあります。記号 & と | は、論理値や比較演算子よりも優先順位が高いことです。つまり、これらは式の中で最初に処理されます。優先順位による予期せぬ動作を避けるため、&と|を使用する場合は比較演算を括弧で囲むことをお勧めします。

優先順位を理解することは、正確で予測可能なコードを書くために不可欠です。演算子の優先順位の詳細を知りたい場合は、ドキュメントやその他のリソースを参照してください。

コメント

プログラミングでは、コードに注釈や説明を加えたい場面によく遭遇します。 そこで便利なのがコメントです。 コメントは、コードの中で実行されません。

Pythonでは、コメントは#記号を使って作成します。ここではコメントの使い方を説明します:

一行コメント

行末にコメントを追加することで、そのコードが何をしているのかを説明することができます。

a = 10 # aに10を代入する
b = 50 # bに50を代入する
print(a)
print(b)

Output:

10
50

複数行のコメント

長いコメントの場合、トリプルクォート(""")を使って複数行のコメントを作成することができます。

c = a + b
"""
複数行のコメントを書く場合
トリプルクォートを使用する
"""
print(c)

Output:

60

このコードを実行すると、トリプルクォートで囲まれた複数行のコメントは無視され、実際のコードだけが処理されます。

コメントを使うことは、コードを読みやすくし、他の人(あるいは自分自身)がコードのさまざまな部分の目的や機能を理解するのに役立つので覚えておいてください。

関数

関数は数学で習いますが、Pythonの関数もほぼ同じ意味を持っていると考えて問題ありません。

Pythonの関数にデータを与えると、それが処理され、何らかの結果が得られます。

Pythonの関数では、関数に与えるデータを「引数」と呼び、関数の処理結果を「戻り値」と呼びます。

関数には、引数が1つで済むもの、2つ以上必要なもの、全く必要ないものがあります。

例えば、Pythonのprint()関数を使うときは、カッコの中に「画面に表示したいデータ」を入れます。 「Hello, world!」と表示したい場合は、print("Hello, world!")と入力します。

print("Hello, world!")

Output:

Hello, world!

Pythonの標準関数

Pythonには、print()など、さまざまな関数が標準で用意されています。

これまでも使用してきたprint()は、文字列を画面に表示する関数ですが、これとは逆に、プログラムの実行中にそれを使っている人から情報を得ることができる便利な関数 input() があります。

input()を使うときは、括弧の中に引数を入れて、ユーザーに特定の情報を求めることができます。 それに対してユーザーが入力したものが、戻り値となります。 input()は何かを返してくれるので、通常は以下のように使います:

name = input("名前を入力:")
print("あなたの名前は" + name + "ですね。")
名前を入力:太郎

キーボードから入力された文字列「太郎」が変数名に格納され、その名前が表示される。

あなたの名前は太郎ですね。

input()に関する注意点:

input()を使うと、Pythonは情報を返してくれますが、ここで重要なのは、数値を入力しても、それを "文字列 "として扱うということです。つまり、数学の問題で単語を使おうとするようなものですからこのようなエラーメッセージが表示されます:

num = input("整数を入力してください:")
num += 5
整数を入力してください:5

Output:

TypeError: can only concatenate str (not "int") to str

上のようなエラーが表示されたら、それは数字ではないものに数字を足そうとしていることを意味しています。 これを解決するには、input()関数を次のようにint()で囲んで数字に変換します:

num = int(input("整数を入力してください:"))

こうすることで、ユーザーきち入力した数値は適切に変換され、問題なく数学で使うことができます。

まとめ

今回は、Pythonの基本構文として、数値データと文字列データ、そしてPythonプログラムを書くための基本的な要素である変数、演算子、コメント、関数について解説しました。どれも必要なものばかりなので、一度に覚えるのは無理でも、常に復習しながらプログラムを作成し、少しずつ覚えていきましょう。

コメント