Pythonプログラミングの基礎知識

インストール

変数と単純なデータ型

コメント

# 1行コメント

変数

変数はデータを識別するためのラベルです。

Pythonでは変数宣言が不要です

変数命名ルール

Pythonの変数名はアルファベット、数字、アンダースコアのみ使用可能です。

変数の使用

greeting = "こんにちはPython世界"
print(greeting)

複数変数に同時代入

a,b,c=10,20,30
print(a,b,c)

定数

定数は変更されない固定値です。

Pythonでは大文字で定義しますが、強制的に変更不可ではありません。

MAX_USERS=5000
print(MAX_USERS)

文字列

文字列は一連の文字です。

Pythonではシングルクォートまたはダブルクォートで囲むことで文字列を表します。

文字列の代入と利用

text = 'こんにちは "Python" 世界'
text1 = "こんにちは 'Python' 世界1"
print(text)
print(text1)

文字列メソッド

# 各単語の先頭を大文字に
text = 'こんにちは "Python" 世界'
print(text.title())
# 空白を削除
print(" Python".lstrip())
print("Python ".rstrip()+"1")

変数を文字列内に使用

# f文字列を使用
text = 'こんにちは'
print(f"{text} 世界")
# formatでフォーマット
text = 'こんにちは'
print("{} 世界".format(text))

タブや改行で空白を追加

text = 'こんにちは'
print("\n"+text)
print("----------")
print("\t"+text)

数値

数値のルール

括弧で演算順序を変更できます

Pythonでは浮動小数点数は複数桁を表示します

任意の2つの数値を除算すると、結果は浮動小数点数になります

大きな数値を記述する際は、アンダースコアでグループ化できます。

# 演算順序を変更
print(5*(3+2))
# 浮動小数点数の表示
print(3*0.1)
print(0.2+0.1)
# 数値の除算
print(4/2)

# 大きな数値の表示
print(3_0000)

入力

input関数を使用すると、Pythonはユーザー入力を文字列として解釈します

name=input("名前を入力してください:")
print(name)

型変換

name=input("名前を入力してください:")
print(int(name))

複合データ型

リスト

リストは特定の順序で並べられた要素のコレクションです。

要素は任意の型を使用できます。

Pythonでは角括弧[]で表し、要素はカンマで区切ります。

リストを新しい変数に代入すると、変更は元の変数にも影響します。再代入すると影響しません。

リストの宣言と空リスト

# リストの宣言と空リスト
empty_list = []
list = [1, 2]
print(empty_list,list)

リストからデータを取得

# リストからデータを取得
list = [0, 1]
print(list[0])

リストの長さ

# リストの長さ
list = [0, 1]
print(len(list))

リストのイテレーション

# リストのイテレーション
list = [0, 1]
for v in list:
    print(v)

リストのスライス

# リストのスライス
list = [0, 1,2]
print(list[0:1])
print(list[-1:])

スライスのイテレーション

# リストスライス
list=[1,2,3]
for v in list[0:2]:
    print(v)


数値リストの作成

# 数値リストの作成
x,y,z=range(0,3)
print(x,y,z)
# range関数のイテレーション
for v in range(1,2):
    print(v)

リスト内包表記

# リスト内包表記
list=[v**2 for v in range(1,3)]
print(list)

rangeで数字リストを作成

# rangeで数字リストを作成
numbers=list(range(1,2))
print(numbers)

インデックス範囲外エラー

list=["リスト0","リスト1"]
print(list[0],list[1],list[6])

"""
Traceback (most recent call last):
  File "D:\study\py\python\main.py", line 2, in <module>
    print(list[0],list[1],list[6])
IndexError: list index out of range

"""

リスト要素の変更

list=["リスト0","リスト1"]
list[0]="リスト1"
print(list)

リスト要素の追加

# リスト末尾に要素を追加
list=["リスト0","リスト1"]
list.append("リスト2")
print(list)
# リストに要素を挿入
list=["リスト0","リスト1"]
list.insert(2,"リスト2")
print(list)

リスト要素の削除

# リスト末尾要素の削除
list=["リスト0","リスト1"]
list.pop()
print(list)
# リストの指定位置要素削除
list=["リスト0","リスト1"]
del list[0]
print(list)

# リストの指定位置要素削除
list=["リスト0","リスト1"]
list.pop(0)
print(list)


# 値で要素削除(最初のみ)
list=["リスト0","リスト1"]
list.remove("リスト0")
print(list)


リストを新変数に代入

list=[1,2,3]
list1=list
list[0]=0
print(list)
print(list1)

list=[1,2]
list1=list
list1=[1,3]
list1.pop(0)
print(list,list1)

リストのコピー

# リストのコピー
list=[1,2,3]
list1=list[:]
list[0]=0
print(list)
print(list1)

リストの永続的なソート

# リストの永続的なソート
list=["b","c","a"]
list.sort()
print(list)
list.sort(reverse=True)
print(list)

リストの一時的なソート

# リストの一時的なソート
list=["b","c","a"]
print(sorted(list))

リストの永続的な逆順

# リストの永続的な逆順
list=["b","c","a"]
list.reverse()
print(sorted(list))

数値リストの統計計算

# 数値リストの統計計算
list=[1,2,3]
print(min(list))
print(max(list))
print(sum(list))

タプル

Pythonにおける変更不可なリストをタプルと呼び、()で宣言します

タプルの定義

# タプルの定義
dimensions=(50,100)
print(dimensions[0],dimensions[1])
# 要素1つのタプル
dimensions=(50,)
print(dimensions[0])

タプル変数の更新

# タプル変数の更新
dimensions=(50,)
dimensions=(50,60)
print(dimensions)

タプル値のイテレーション

セット

セットの各要素はユニークです。

Pythonでは{}で表します

セットを新変数に代入すると、元のセットに影響します。

セットの宣言と空セット

# セットの宣言
set={1,2,2}
print(set)

# 空セットの作成
empty_set = set()
print(type(empty_set)) # 出力結果 <class 'set'>
print(len(empty_set)) # 出力結果 0
# リストをセットに変換
list=[1,2,3,3]
set=set(list)
print(set)


辞書

辞書はキーと値のペアです。 Pythonでは{ }で表し、キーは基本型やタプルが可能で、リストや辞書は不可。値は任意のPythonオブジェクト。

辞書を新変数に代入すると、変更は元の辞書にも影響します。

辞書の宣言

# 空辞書と辞書
dict={}
dict={1:"1",2:"2"}
print(dict)

辞書の値のアクセス

# 辞書の値の取得
dict = {1:"1",2:"2"}
print(dict[1])

存在しないキーのアクセスはKeyError

# 存在しないキーのアクセスはKeyError
dict = {1:"1",2:"2"}
print(dict[3])

get()で値の取得

# get()で値の取得、存在しない場合はNone
dict = {1:"1",2:"2"}
print(dict.get(3))

辞書へのキー値の追加

# 辞書へのキー値の追加
dict = {1:"1",2:"2"}
dict[3]="3"
print(dict)

辞書のキーの変更

# 辞書のキー値の変更
dict = {1:"1",2:"2"}
dict[1]="2"
print(dict)

辞書からのキーの削除

# 辞書からのキー値の削除
dict = {1:"1",2:"2"}
del  dict[1]
print(dict)

辞書のすべてのキー値対、キー、値のイテレーション

dict = {1: "1", 2: "2" }
for k,v in dict.items():
    print(k,v)

dict = {1: "1", 2: "2" }
for k in dict.keys():
    print(k)

dict = {1: "1", 2: "2" }
for v in dict.values():
    print(v)

dict = {1: "1", 2: "2" }
for k in sorted(dict.key()):
    print(k)

辞書リスト

# 辞書リスト
dict={"名前":"佐藤"}
dict1={"名前":"鈴木"}
dict2={"名前":"田中"}
list=[dict,dict1,dict2]
print(list)

リストを辞書に保存

# リストを辞書に保存
dict={"名前":"佐藤","座標":[10,10,10]}
print(dict)

辞書を辞書に保存

# 辞書を辞書に保存  キーは名前、値は関連情報  情報は複数フィールド
user = {
    "佐藤": {"年齢": 12},
    "山田": {"住所": "東京都"}
}
print(user)

ループと条件

条件テスト

# 条件テスト
print(1>2)
print(1!=2)

ブール式

# ブール式
b=True
b1=False

大小を無視した等価比較

# 大小を無視した等価比較
print("a"=="A")

リスト内に特定値があるか確認

# リスト内に特定値があるか確認
list=[1,2]
if 1 in list:
    print("存在")

if文

# if文
age=14
if age<=4:
    print("子供")
elif age<=18:
    print("未成年")
else:
    print("成人")

while文

i=0
while i<10:
    print(i)
    i+=1
# ユーザーが終了するまで実行
message=""
while message!= '終了':
    message=input("入力:")
    print(message)

forループはリストのイテレーションに有効ですが、forループ内でリストを変更すべきではありません。

# while文でリストを変更
list=[1,2,3]
while list:
    list.pop()
    print(list)
# 特定値を持つリスト要素をすべて削除
list=[1,1,2,3]
while 1 in list:
    list.remove(1)
    print(list)

関数

引数

# 関数の宣言
def describe_pet(animal_type ,animal_name):
    print(animal_type)
    print(animal_name)
# 順序で関数を呼び出す
describe_pet("猫","猫")

# 引数を指定して呼び出す
describe_pet(animal_name="猫",animal_type="猫")


# 実引数のエラーを避ける
describe_pet()

デフォルト値付き引数

# デフォルト値付き引数
def describe_pet(animal_name,animal_type="犬" ):
    print(animal_type)
    print(animal_name)

任意の数の引数を渡す

Pythonでは*引数で任意の数の引数を受け取り、タプルとして保存します。

def f (*args):
    print(args)
f(1)
f(1,2)

位置引数と任意の数の引数

任意の数の引数は最後に配置する必要があります。

def f (arg ,*args):
    print(arg)
    print(args)
f(1)
f(1,2)

戻り値

Pythonではreturn文で値を呼び出し元に返します

# 単純な戻り値
def format_name(first_name,last_name):
    return f"名前は:{first_name}{last_name}"

name=format_name("佐藤","太郎")
print(name)
# 実引数をオプションに
def format_name(first_name,last_name,middle_name=""):
    return f"名前は:{first_name}{middle_name}{last_name}"

name=format_name("佐藤","太郎")
print(name)

関数での変更

リストを関数に渡すと、関数内で変更は永続的になります。

# 関数内でリストを変更
def f (list):
    list[0]=1
    print(f"関数内{list}")

list=[0,1,2,3]

f(list)
print(f"関数外{list}")
# 関数内でリストを変更しないようにする
def f (list):
    list[0]=1
    print(f"関数内{list}")

list=[0,1,2,3]

f(list[:])
print(f"関数外{list}")



モジュールのインポート

import module_name as mn

from module_name import func_name as fn

import module_name *

f.py 

def f():
    print("1")

f1.py

import f
f.f()

モジュールのリネーム

import f as f1
f1.f()

特定の関数のインポート

from f import f
f()

モジュールのリネーム

from f import f as f1
f1()

モジュールのすべての名前をインポート

from f import *
f()

クラス

クラス名の命名規則: カンマ大文字のキャメルケースを使用します

使用方法

クラスの作成、インスタンスの作成、属性のアクセス、メソッドの呼び出し

class Dog:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def sit(self):
        print(f"{self.name}{self.age}")

dog=Dog("佐藤","太郎")
print(dog.age)
dog.sit()

属性にデフォルト値を設定

class Car:
    def __init__(self,name):
        self.name=name
        self.odometer_reading=0

    def get_desc(self):
        print(f"{self.name}は{self.odometer_reading}km走行")

    def drive(self,mileage):
        self.odometer_reading+=mileage
car=Car("ランボルギーニ")
car.get_desc()

car.drive(1)
car.get_desc()

属性値の変更:直接変更、メソッドを通じて変更、属性値をインクリメント

継承

class Car:
    def __init__(self, name):
        self.name = name
        self.odometer_reading = 0

    def get_desc(self):
        print(f"{self.name}は{self.odometer_reading}km走行")

    def drive(self, mileage):
        self.odometer_reading += mileage

class ElectricCar(Car):
    def __init__(self, name, battery_size):
        super().__init__(name)  # 正しい呼び出し方法
        self.battery_size = battery_size
    def get_desc(self):
        print(f"{self.name}は{self.odometer_reading}km走行、残りバッテリー{self.battery_size}")


car = ElectricCar("佐藤", "70kWh")
car.get_desc()

継承クラスの作成

親クラスのメソッド、属性の上書き

単一クラスのインポート

複数クラスのインポート

すべてのクラスのインポート

モジュール全体のインポート

ファイルと例外

try-except-elseブロックの使用

例外処理でクラッシュを防ぐ エラーが発生しても、プログラムがまだ処理を完了していない場合は、適切な例外処理が重要です。

ZeroDivisionError例外の処理

テスト

ファイル

ファイルを開くと、必要に応じて使用し、Pythonは適切なタイミングで自動的に閉じます。

ファイルパスを表示する際、Windowsは逆スラッシュ()を使用しますが、コードではスラッシュ(/)でも問題ありません。

タグ: Python データ構造 関数 クラス 例外処理

6月21日 22:46 投稿