インストール
変数と単純なデータ型
コメント
# 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は逆スラッシュ()を使用しますが、コードではスラッシュ(/)でも問題ありません。