banner
苍术

苍术

不探索,无进步 [email protected]

C++からPythonへ

環境インストール#

  1. 'https://www.jetbrains.com/pycharm/' にアクセスして pycharm をダウンロードし、インストールします。
  2. ガイドに従ってアプリをインストールし、ログインして最初の Python コードを作成します。

差異#

  • 疑う余地なく、py は cpp よりも簡単で、コードを書く形式も同様です。大体の違いは以下の通りです:
      1. ヘッダーファイルは必要ありません
      1. メイン関数には関数名がありません
      1. {} は必要ありません
      1. ; は必要ありません

次に、最も簡単な出力から始めましょう;

基本知識#

入力出力#

出力関数 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 では型指定子は必要なく、設定時に自動的に割り当てられます。(ないわけではありません!!!)

  1. 整数型
  2. 浮動小数点型
  3. 文字列
  4. bool 型
  5. None は独自のデータ型です
  6. リスト、タプル、辞書、集合も一般的なデータ型です
  • 型変換:
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 つのクラスに分けられます

  1. 一般演算子

+,-,*,/(真の除算),//(床除算、小数部分を切り捨て),%(余りを取る)、**(べき乗演算)

  1. 代入演算子

=,+=,-=,*=,/=,%=,**=

連続代入:a=b=c=d=10

  1. ブール演算子

== (等しい)、!=(等しくない)、 >= ,<= ,>, <

  1. 論理演算子

主に 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点前後です

ループフロー#

  1. 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
  1. for ループ

構文:

for 変数 in イテラブルオブジェクト:
	コードブロック

例:

l=[3,2,1]
for n in l:
	print("1")

出力:

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 が指定されると、それは増分(または減分)を指定します。

  1. 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 つのリストを複数のリストに切り分けることを指し、構文は次の通りです:

変数[開始インデックス:終了インデックス] 	#終了インデックスは取得できません

スライス操作を行う際は、以下の点に注意してください:

  1. インデックスが 0 から始まる場合は省略できます。例えば n = l [:4]。
  2. 終了インデックスが最後の要素を取得する場合は省略できます。例えば n = l [3:]。
  3. リスト内のすべての要素を取得する場合は、開始と終了のインデックスを省略できます。例えば n = l [:]。
  4. 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()#文字列を小文字に変換します

フォーマット出力#

  1. format 構文 1:数字をプレースホルダーとして使用(インデックス)
"{0} へへ".format("Python")
a = 100
s = "{0}{1}{2} へへ"
s2 = s.format(a, "JAVA", "C++")
print(s2)
  1. format 構文 2:{} をプレースホルダーとして使用
a = 100
s = "{}{}{} へへ"
s2 = s.format(a, "JAVA", "C++", "C# ")
print(s2)
#出力
100JAVAC++ へへ
  1. 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)#

辞書はデータを保存するために使用され、辞書内のデータはマッピング関係で保存されます。

辞書の特徴#

  1. 辞書は 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}    

辞書のアクセス#

  1. 基本形式:

    変数名 [キー名] #キーに対応する値
  2. キーと値のペアを追加

    変数名 [キー名]= 値
  3. キーと値のペアの値を変更

    変数名 [キー名]= 値

d = {"name": "小黒"}
print(d["name"])
#出力:
小黒

辞書のメソッド#

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。