環境インストール#
- 'https://www.jetbrains.com/pycharm/' にアクセスして pycharm をダウンロードし、インストールします。
- ガイドに従ってアプリをインストールし、ログインして最初の Python コードを作成します。
差異#
- 疑う余地なく、py は cpp よりも簡単で、コードを書く形式も同様です。大体の違いは以下の通りです:
-
- ヘッダーファイルは必要ありません
-
- メイン関数には関数名がありません
-
- {} は必要ありません
-
- ; は必要ありません
-
次に、最も簡単な出力から始めましょう;
基本知識#
入力出力#
出力関数 print () の構文は次の通りです:
print()
入力関数は input () で、ユーザーからの入力を受け取る機能があります。構文は次の通りです:
input(出力の内容)
例:ユーザーからパスワードを受け取り、印刷します:
n = input("パスワードを入力してください:") #入力内容をnに代入します
print(n) #nを印刷します
Python では、「#」はコメントを示し、「#」の後の内容は実行されません。
ヒント情報
パスワードを入力してください:123
123
変数#
- 有効な識別子:大文字と小文字のアルファベット、数字(先頭にはできません)、アンダースコア。
- 長さの制限はありません。
文意を考慮し、関数名、変数名などの命名方法にはそれぞれの違いがあります:
1. パッケージ名:すべて小文字、例えばtime;
2. クラス名:各単語の最初の文字を大文字にし、他は小文字、いわゆる大キャメルケース命名、例えばHelloWorld;
3. 変数名/関数名:最初の単語の最初の文字を小文字にし、後の単語の最初の文字を大文字にし、いわゆる小キャメルケース命名、例えばhelloWorld;
4. 定数:すべて大文字、例えばHELLO。
5. その他の命名方法、例えばhello_world。
データ型#
C++ とは異なり、Python では型指定子は必要なく、設定時に自動的に割り当てられます。(ないわけではありません!!!)
- 整数型
- 浮動小数点型
- 文字列
- bool 型
- None は独自のデータ型です
- リスト、タプル、辞書、集合も一般的なデータ型です
- 型変換:
int() #変換されるものは全て数字の文字列でなければなりません
str()
float() #変換されるものは全て数字の文字列でなければなりません
- 型情報の取得
type() #オブジェクトの型を返します
type().__name__
isinstance(,) #データ型を判断するためによく使われ、boolを返します
例:
f = 30
print(type(f))
print(type(f).__name__)
print(isinstance(f,int))
出力:
f = 30
print(type(f))
print(type(f).__name__)
print(isinstance(f,float))
演算子#
演算子は多くの 4 つのクラスに分けられます
- 一般演算子
+,-,*,/(真の除算),//(床除算、小数部分を切り捨て),%(余りを取る)、**(べき乗演算)
- 代入演算子
=,+=,-=,*=,/=,%=,**=
連続代入:a=b=c=d=10
- ブール演算子
== (等しい)、!=(等しくない)、 >= ,<= ,>, <
- 論理演算子
主に not、and、or の 3 種類があり、非、与、またはとも呼ばれます
and:前後が真であれば真
or:1 つが真であれば真
not: 非真、非偽
例:
a = 10
b = 20
c = 30
d = 40
n1 = a > b and a < c #a>bは偽、a<cは真、偽と真は偽
n2 = not a < c #a<cは真、非真は偽
n3 = a > b or a < c #a>bは偽、a<cは真、偽または真は真
print(n1,n2,n3)
出力:
False False True
フロー制御#
条件分岐 (if elif else)#
例:
s = int(input("スコアを入力してください:"))
if 80 >= s >= 60:
print("合格")
elif 80 < s <= 90:
print("優秀")
elif 90 < s <= 100:
print("非常に優秀")
else:
print("不合格")
if s > 50:
print("あなたのスコアは60点前後です")
else:
print("あなたのスコアは50点未満です")
出力:
スコアを入力してください:55
不合格
あなたのスコアは60点前後です
ループフロー#
- while ループ
構文:
while ブール式:
コードブロック
条件(ブール式)が真である限り、内部のコードブロックが実行されます。
例:整数を入力し、各桁の合計を計算します。例えば、321 を入力すると、各桁の合計は 6 になります。
# 整数を入力し、各桁の合計を計算します 例:321=6
n = int(input("整数を入力してください:")) # 文字列を整数型に変換します
# sums累加器:m=10 m=10+5
sums = 0
while n != 0: # 32 #3
sums = sums + n % 10 # sums=1+2=3+3=6
n = n // 10 # 32
print(sums)
出力:
整数を入力してください:2345
14
- for ループ
構文:
for 変数 in イテラブルオブジェクト:
コードブロック
例:
l=[3,2,1]
for n in l:
print("1")
出力:
1
1
1
- range
for ループは range と一緒に使われることがよくあり、range はイテラブルオブジェクトです。range の構文は次の通りです:
range(start=0,stop,step=1)
Range オブジェクトは、開始(含む)から終了(除外)までの整数列をステップで生成するオブジェクトを返します。Range (i, j) は i, i+1, i+2,…j - 1 を生成します。Start はデフォルトで 0、stop は省略可能です!
Range (4) は 0,1,2,3 を生成します。これらは 4 つの要素を含むリストの有効なインデックスです。
step が指定されると、それは増分(または減分)を指定します。
- continue break
continue は今回のループをスキップし、次のループを続行します
break はループを終了します
リスト (List)#
リストは同時に任意のデータを格納でき、整数型、浮動小数点型、文字列、ブール型などを含む、一般的なデータ型の 1 つです。
リストの作成#
リストもイテラブルオブジェクトです
1. 通常の形式
l = [1,2,3,4,5] ---整数型リスト
l = ["a","b","c"] ---文字列リスト
l = [True,False,1>2,5<6]---ブールリスト
2. 混合リスト
l = [1,2.5,"a",True]
3. 空リスト
l = []
リストからデータを取得#
リストはインデックスを持ち、インデックスは 0 から始まります。取得方法は配列に似ています
ただし、リストのインデックスは正順で 0 から始まり、逆順で - 1 から始まります
print (List) はリスト全体を順番に出力します
リスト内のデータの交換#
例:
l = [1, 2, 3, 4, 5] # インデックス:0から始まります
l[2], l[3] = l[3], l[2]
print(l)
出力:
[1, 2, 4, 3, 5]
リストに要素を追加#
append(project) #リストの末尾にオブジェクトを追加(全体として)
extend(project) #リストの末尾にイテラブルオブジェクトを追加 例:2つのリストを接続
insert(num,project) #指定したインデックス位置にオブジェクトを追加(全体として)
リストから要素を削除#
clear()#リストを空にします(リスト自体は残ります)
pop()#指定したインデックスの要素を削除します。インデックスを指定しない場合は最後の要素を削除します
remove()#(正順で最初の)指定したオブジェクトを削除します
del()#変数(全体のリスト)またはリストの指定したインデックスの要素の値を削除します(補填)
例:
l = [1, 2, 3, 4, 5]
l2=[6, 7, 8, 9, 10]
l.extend(l2)
print(l)
l.append(l2)
print(l)
l.insert(3,l2)
print(l)
l.pop(1)
print(l)
l.remove(l2)
print(l)
del l[-1]
print(l)
del l
print(l2)
l2.clear()
print(l2)
出力
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, [6, 7, 8, 9, 10]]
[1, 2, 3, [6, 7, 8, 9, 10], 4, 5, 6, 7, 8, 9, 10, [6, 7, 8, 9, 10]]
[1, 3, [6, 7, 8, 9, 10], 4, 5, 6, 7, 8, 9, 10, [6, 7, 8, 9, 10]]
[1, 3, 4, 5, 6, 7, 8, 9, 10, [6, 7, 8, 9, 10]]
[1, 3, 4, 5, 6, 7, 8, 9, 10]
[6, 7, 8, 9, 10]
[]
要素の変更#
配列と同様です。
リストの高度な特徴#
スライス操作#
スライスとは、1 つのリストを複数のリストに切り分けることを指し、構文は次の通りです:
変数[開始インデックス:終了インデックス] #終了インデックスは取得できません
スライス操作を行う際は、以下の点に注意してください:
- インデックスが 0 から始まる場合は省略できます。例えば n = l [:4]。
- 終了インデックスが最後の要素を取得する場合は省略できます。例えば n = l [3:]。
- リスト内のすべての要素を取得する場合は、開始と終了のインデックスを省略できます。例えば n = l [:]。
- n = l [:-1] は 0 から始まり、最後の 2 つの要素を除外します。
例:
l = [1, 2, 3, 4, 5]
print(l[0:4])
出力
[1, 2, 3, 4]
等間隔抽出#
方法は n = l [開始:終了:ステップ] で、この方法はリストを正方向にも逆方向にも操作できます。例えば:
l = [1, 2, 3, 4, 5]
n = l[-1:-3:-1]
print(n)
出力
[5, 4]
リストのいくつかの演算子#
比較演算子#
リスト同士を比較し、同じインデックスで比較します。小さい順に比較し、値が同じであれば次の要素を比較し、異なれば直接結果を出します。例えば:
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # インデックス:0から始まります
l2 = [2, 3, 4, 6]
print(l < l2) # True
出力
True
論理演算子#
論理演算子 and not or は比較演算子と似ており、返される結果はすべてブール値(True/False)です。
連結演算子#
連結演算子は + で、2 つのリストを連結するためによく使用されます。
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # インデックス:0から始まります
l2 = [2, 3, 4, 6]
print(l + l2)
繰り返し演算子#
繰り返し演算子は * で、後に数字が続き、リスト内の要素を何回繰り返してコピーするかを示します。
l2 = [2, 3, 4, 6]
print(l2*2)
メンバーシップ演算子#
メンバーシップ演算子には in と not in があり、要素がリストに存在するかどうかを判断し、結果はブール値です。
l = [2, 3, 4, 6]
print(5 not in l) #出力「5はリストlに存在しない」の真偽
実行結果
True
リストのその他のメソッド#
copy()#浅いコピー
count(project)#リスト内にオブジェクトが出現する回数を返します
index(value,開始インデックス,終了インデックス)#要素が最初に出現するインデックス位置を返します。範囲を自分で定義することもできます
reverse()#その場で反転します
sort (key=None reverse=False)#クイックソート、デフォルトは小さい順にソートします。key:アルゴリズム
len()#リストの長さを取得します
二次元リスト#
#変数[外側リストのインデックス][内側リストのインデックス]
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i in l:
for j in i:
print(j)
出力
1
2
3
4
5
6
7
8
9
タプル(tuple)#
タプルの作成とアクセス#
タプルは()の形式で、イテラブルオブジェクトであり、順序があります。インデックス操作をサポートし、スライス操作もサポートします [:]
リストと同様で、詳細は省略します。
変更と削除#
タプルは不変型であり、変更できませんが、タプルをリストに変換することで変更や削除などの操作を行い、最後にリストをタプルに戻してタプルの変更や削除を完了します。
例えば:タプル内の要素を変更する:
t = (1, 2, 3, 4, 5)
l = list(t) #タプルをリストに変換します
print(l) #リストを出力します
l[2] = 6 #リストの指定した要素を変更します
print(l) #新しいリストを出力します
t = tuple(l) #リストをタプルに変換します
print(t)
出力
[1, 2, 3, 4, 5]
[1, 2, 6, 4, 5]
(1, 2, 6, 4, 5)
タプルの演算子#
タプルにも演算子があり、リストの演算子と同じ方法で、詳細は省略します。
タプルのメソッド#
操作を行うにはまずリストに変換してから行います。詳細は省略します。
また、以下の 2 つのメソッドが追加されます:
1. count(value)
#指定された値が出現する回数をカウントします
2. index(value,[start],[stop])
#valueがタプル内で(startからstopの間)出現するインデックス位置(最初に出現するインデックス)を返します
文字列#
Python では、文字と文字列に違いはありません。' ' または " " を使用できます。
文字列の特徴#
1. 文字列は不変型です
2. 文字列はイテラブルオブジェクトです
3. 文字列はインデックスとスライス操作をサポートします
4. 演算子をサポートします;
連結:+
繰り返し演算子:*
比較演算子: > < <= >= == !=
論理演算子:not and or
メンバーシップ: in not in
文字列のメソッド#
capitalize()#文字列の最初の文字を大文字にし、後は小文字にします
casefold()#文字列全体を小文字にします
encode()#エンコード str--bytes(バイナリ文字列)
decode()#デコードします
count(sub,start, stop)#文字(sub)が出現する回数を返します。star: 開始インデックス、stop:終了インデックス
find(sub,start,stop)# subが最初に出現するインデックスを返します。見つからない場合は-1を返します
index(sub, start, stop)#subが最初に出現するインデックスを返します。見つからない場合はエラーを返します
upper()#文字列を大文字に変換します
lower()#文字列を小文字に変換します
フォーマット出力#
- format 構文 1:数字をプレースホルダーとして使用(インデックス)
"{0} へへ".format("Python")
a = 100
s = "{0}{1}{2} へへ"
s2 = s.format(a, "JAVA", "C++")
print(s2)
- format 構文 2:{} をプレースホルダーとして使用
a = 100
s = "{}{}{} へへ"
s2 = s.format(a, "JAVA", "C++", "C# ")
print(s2)
#出力
100JAVAC++ へへ
- format 構文 3:{} をプレースホルダーとして文字を使用
s = "{a}{b}{c} へへ"
s2 = s.format(b="JAVA", a="C++", c="C# ")
print(s2)
#出力:
C++JAVAC# へへ
s.format (s2) は s を s2 でフォーマットすることを理解できます。
4.%s
構文は “% s”%(値)で、最も一般的なパラメータは任意の値にできます。
例:
for i in range(1, 10):
for j in range(1, i + 1):
print("%s * %s = %s" % (i, j, i * j), end="\t")
print()
#出力:
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
エスケープ文字#
1. “\n” :改行文字
2. “\'”:単一引用符
3. “\“”:二重引用符
4. "\\" : \
ここで注意すべきは \ で、これは非常に巧妙な使い方があり、例えばコードの改行を実現できます
a = "sxsxsxsxsxsxsxs\
xsxsxsxs\
xsx"
print(a)
a = 1 + 2 + 3 \
+ 4
print(a)
#出力:
sxsxsxsxsxsxsxs xsxsxsxs xsx
10
辞書(dict)#
辞書はデータを保存するために使用され、辞書内のデータはマッピング関係で保存されます。
辞書の特徴#
- 辞書は Python で唯一のマッピング型です
2. 辞書は順序がありません
3. 辞書はイテラブルオブジェクトです
4. 辞書の構成:
キー:key
値:value
マッピング:キーが値にマッピングされます
キー - 値:キーと値のペア、項目とも呼ばれます
辞書の作成#
1. 直接作成
構文: d = {} #空の辞書
例えば: d = {"name":"不良人","apple":"リンゴ"}
2. dict()
例えば:d = dict() #空の辞書
3. dict(イテラブルオブジェクト)
例:
d3 = dict([("one",1),("two",2)])
print(d3)
#出力:
{'one': 1, 'two': 2}
これはタプルで、one がキー、1 が値で、‘one’ : 1 はキーと値のペアです。
4. dict(**kwargs)
例:
d4 = dict(a=3, b=4)
print(d4)
#出力:
{'a': 3, 'b': 4}
辞書のアクセス#
- 基本形式:
変数名 [キー名] #キーに対応する値 - キーと値のペアを追加
変数名 [キー名]= 値 - キーと値のペアの値を変更
変数名 [キー名]= 値
例
d = {"name": "小黒"}
print(d["name"])
#出力:
小黒