🎉

Pythonの初心者レッスンーーPython基礎文法

2024/06/11に公開

シーリズの目次

Pythonの初心者レッスンをここにまとめています。
https://zenn.dev/datasciencekun/articles/319e0f4b4021c5

Python実行環境

様々なPython環境を構築方法があるけど、初心者に対してGoogle Colabがおすすめです。
構築する必要がなくて、登録するとすぐに使えるようになります。
Google Colabのリンクは下記です。
https://colab.research.google.com/?hl=ja

Google Colabの使い方は他のブログに参照してください!
https://www.kikagaku.co.jp/kikagaku-blog/google-colab-howto/

識別子

"Python識別子" は、Pythonプログラミング言語で変数、関数、クラス、モジュールなどに与えられる名前のことを指します。識別子は、次のようなルールに従っています:

  1. 識別子は、アルファベット(大文字または小文字)、数字、アンダースコア(_)から構成されます。
  2. 識別子は数字で始まることはできません。
  3. Pythonの予約語(キーワード)は識別子として使用できません。

日本語文字も識別子として使えるけど、おすすめしないです。
例えば、次のようになります:

my_variable = 5
勧誘 = 1 # おすすめしないです

予約語

Python予約語(キーワード)とは、Python言語において特別な意味を持ち、プログラム内で変数名や関数名などに使用できない単語のことを指します。これらのキーワードは、Pythonの文法を定義するために使用され、制御構造やデータ型の定義など、様々な言語機能に関連しています。

以下は、Pythonの予約語の一覧です(Python 3.10時点):

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

コメント

Pythonにおけるコメントは、コードに説明や注釈を追加するためのもので、実行時には無視されます。コメントを使用することで、コードの可読性を向上させ、将来のメンテナンスや他の開発者との共同作業を容易にすることができます。Pythonには2種類のコメントがあります:行コメント(シングルラインコメント)とブロックコメント(マルチラインコメント)。

  • 行コメント(シングルラインコメント)
    行コメントは、行の終わりまでがコメントとして解釈されます。行コメントは # 記号を使用して開始します。
# これは行コメントです
# これはブロックコメントの続きです
# さらに続きます
print("Hello, World!")  # これも行コメントです
  • ドキュメント文字列(docstring)
    ドキュメント文字列は、関数やクラス、モジュールの最初に書かれる特別なコメントです。3重引用符で囲まれ、公式なドキュメントとしてツールによって抽出されることがあります。
def example_function():
    """
    これはこの関数の説明を行うドキュメント文字列です。
    この関数は何もせず、ただpass文を実行します。
    """
    pass

print(example_function.__doc__)  # ドキュメント文字列を出力します

この例では、example_function のドキュメント文字列を表示しています。ドキュメント文字列は、関数やクラスの仕様を説明するために使用され、開発者がコードの意味を理解しやすくするための重要なツールです。

行とインデント

Pythonにおける行とインデントは、コードの構造を定義する重要な要素です。Pythonはインデントによってコードブロックを区別するため、正しいインデントの使用がプログラムの正確な動作に不可欠です。以下で詳細を説明します。


  • Pythonコードは一行ごとに書かれ、通常は1行に1つのステートメント(文)を記述します。Pythonではセミコロン(;)を使って複数のステートメントを同じ行に書くこともできますが、推奨されません。
    例:
# 一行に一つのステートメント
x = 10
y = 20

# セミコロンを使った複数ステートメント
x = 10; y = 20
  • インデント
    インデントは、コードブロック(例えば、関数、ループ、条件分岐など)を定義するために使用されます。Pythonでは、インデントは通常スペース4つ分かタブ1つ分として表現されますが、スペースかタブのどちらかに統一する必要があります。Pythonコミュニティのスタイルガイド(PEP 8)では、スペース4つ分のインデントを推奨しています。
    例:
# 条件分岐のインデント
x = 10
if x > 5:
    print("x is greater than 5")  # この行はインデントされています
else:
    print("x is 5 or less")  # この行もインデントされています

複数行文

Pythonにおける複数行文(マルチラインステートメント)は、長い文を複数行に分割して記述する方法です。通常、Pythonでは1行に1つのステートメントを書くことが推奨されますが、長いステートメントや可読性を向上させるために複数行に分割することができます。複数行文を記述する方法はいくつかあります。
バックスラッシュ () を使用して、次の行に文が続くことを示します。
例:

total = 1 + 2 + 3 + 4 + \
        5 + 6 + 7 + 8 + \
        9 + 10

print(total)

丸括弧、角括弧、波括弧を使用する場合、括弧内に続く文は自動的に複数行にわたっても問題ありません。
例:

# 丸括弧を使用した例
total = (1 + 2 + 3 + 4 +
         5 + 6 + 7 + 8 +
         9 + 10)

print(total)

# 角括弧を使用した例
numbers = [1, 2, 3, 4,
           5, 6, 7, 8,
           9, 10]

print(numbers)

# 波括弧を使用した例
my_dict = {'a': 1, 'b': 2, 'c': 3,
           'd': 4, 'e': 5}

print(my_dict)

数値型

Pythonの数値型は、数値を扱うためのデータ型であり、主に以下の4つの基本的な数値型があります:

  1. 整数型 (int) 例: 1、5、10
  2. 浮動小数点数型 (float)  例: 1.23、3E-2
  3. 複素数型 (complex)  例: 1+2j、1.1+2.2j
  4. ブーリアン(boolean)  例: True、False

文字列

Pythonの文字列(string)は、テキストデータを扱うためのデータ型で、シングルクォート(')、ダブルクォート(")、トリプルクォート(''' または """)で囲むことで表現されます。文字列は不変(イミュータブル)であり、一度作成された文字列は変更できません。以下に、Pythonの文字列について詳しく説明します。

文字列の定義方法

  • シングルクォートとダブルクォート
    シングルクォートとダブルクォートを使って文字列を定義できます。どちらを使用しても同じですが、文字列内にシングルクォートやダブルクォートを含めたい場合は使い分けることができます。
# シングルクォート
str1 = 'Hello, World!'

# ダブルクォート
str2 = "Hello, World!"

print(str1)  # 出力: Hello, World!
print(str2)  # 出力: Hello, World!
  • トリプルクォート
    トリプルクォートを使うと、複数行にわたる文字列を定義することができます。トリプルクォートの中ではシングルクォートやダブルクォートをエスケープせずに使用できます。
# トリプルクォートで複数行の文字列
str3 = """This is a 
multiline string.
It can span multiple lines."""

print(str3)
# 出力:
# This is a 
# multiline string.
# It can span multiple lines.

文字列の操作

  • 連結
    プラス(+)演算子を使って文字列を連結できます。
str1 = 'Hello'
str2 = 'World'
str3 = str1 + ', ' + str2 + '!'
print(str3)  # 出力: Hello, World!
  • 繰り返し
    アスタリスク(*)演算子を使って文字列を繰り返すことができます。
str1 = 'Hello'
str2 = str1 * 3
print(str2)  # 出力: HelloHelloHello
  • インデックスとスライス
    文字列の特定の位置にある文字を取得したり、部分文字列を取得したりすることができます。インデックスは0から始まります。
str1 = 'Hello, World!'

# インデックスでアクセス
print(str1[0])   # 出力: H
print(str1[7])   # 出力: W

# スライスで部分文字列を取得
print(str1[0:5])  # 出力: Hello
print(str1[7:12])  # 出力: World
  • 長さの取得
    組み込み関数 len() を使って文字列の長さを取得できます。
str1 = 'Hello, World!'
print(len(str1))  # 出力: 13

文字列のメソッド

Pythonの文字列には多くの便利なメソッドがあります。いくつかの例を紹介します。

  • 大文字・小文字変換
str1 = 'Hello, World!'
print(str1.lower())  # 出力: hello, world!
print(str1.upper())  # 出力: HELLO, WORLD!
  • 文字列の検索・置換
str1 = 'Hello, World!'
print(str1.find('World'))  # 出力: 7
print(str1.replace('World', 'Python'))  # 出力: Hello, Python!
  • 文字列の分割・結合
str1 = 'apple,banana,cherry'
list1 = str1.split(',')
print(list1)  # 出力: ['apple', 'banana', 'cherry']

str2 = '-'.join(list1)
print(str2)  # 出力: apple-banana-cherry

エスケープシーケンス

特殊な文字を表現するためにエスケープシーケンスを使用します。例えば、改行、タブ、引用符などです。

str1 = 'Hello\nWorld!'  # 改行
str2 = 'Hello\tWorld!'  # タブ
str3 = 'It\'s a string with a single quote.'  # シングルクォートを含む

print(str1)
# 出力:
# Hello
# World!

print(str2)  # 出力: Hello   World!
print(str3)  # 出力: It's a string with a single quote.

f文字列(フォーマット文字列)

Python 3.6以降では、f文字列を使って文字列をフォーマットできます。変数や式を埋め込むことができます。

name = 'Alice'
age = 30
str1 = f'Name: {name}, Age: {age}'
print(str1)  # 出力: Name: Alice, Age: 30

空行

Pythonにおける空行(くうぎょう)とは、何も書かれていない行、つまり空白文字やタブ文字も含まれていない行のことを指します。

  1. 視認性の向上:
    • 空行はコードのブロックを分けて視認性を向上させます。コードの可読性を高めるために使用されます。
  2. 文法的な影響なし:
    • 空行自体はPythonの文法に影響を与えません。プログラムの実行において無視されます。

以下に、空行を使用したコードの例を示します。

def greet(name):
    print(f"Hello, {name}!")

# 空行で関数定義と呼び出しを分けています
greet("Alice")

# 空行を使ってコードのセクションを分けることができます

def farewell(name):
    print(f"Goodbye, {name}!")

farewell("Alice")

同一行で複数の文を表示

Pythonにおいて、同じ行に複数の文を配置することは可能ですが、一般的には推奨されません。Pythonでは、通常、1つの行に1つの文を配置することが標準的な書き方です。しかし、セミコロン(;)を使用することで、1行に複数の文を配置することができます。
例えば:

x = 5; y = 10; print(x + y)

複数の文がコードブロックを構成

Pythonでは、複数の文がコードブロックを構成する場合があります。コードブロックは、通常、制御構造(if文、forループ、whileループなど)や関数、クラスなどの構造の一部として使用されます。コードブロックは、インデントによって示され、同じインデントレベルの文が1つのブロックを構成します。

例えば、以下のPythonコードでは、if文のブロックや関数のブロックがコードブロックを構成しています。

# if文のブロック
if condition:
    statement1
    statement2
    statement3

# 関数のブロック
def my_function():
    statement4
    statement5
    statement6

printアウトプット

Pythonのprint()関数は、プログラム内で情報を出力するための基本的な方法です。print()関数を使用すると、文字列や変数の値などをコンソールやターミナルに表示することができます。

例えば、次のようにprint()関数を使用して文字列を出力することができます。

x="a"
y="b"
# 改行
print( x )
print( y )
 
print('---------')
# 改行しない
print( x, end=" " )
print( y, end=" " )
print()

上記のコードのアウトプット

a
b
---------
a b

import と from...import

Pythonでは、import文を使用して、他のモジュールやパッケージからコードを読み込むことができます。import文を使用することで、外部のモジュールで定義された関数やクラスを使うことができます。
また、from ... import文を使用して、モジュール内の特定の要素(関数やクラス)のみを直接インポートすることもできます。これにより、モジュール名を記述せずにその要素を使用することができます。
例:

import math
from module_name import name1, name2, ...
from math import sqrt

import文とfrom ... import文のどちらを使用するかは、プログラムの要件やコーディングスタイルによって異なります。一般的には、モジュール全体を使用する場合はimport文を使用し、特定の要素のみを使用する場合はfrom ... import文を使用する傾向があります。

Discussion