[toc]
すべての記事をpythonでコーディングします。![]基本構文
注意
コードを書くとき、実行する必要のないコードや、コード記述に追加する必要のないコードがある場合は、コメントを使用する必要があります。
コメントされたテキストやコードは実行されません。
コメントには次の3つの使い方があります:
- # No.
# 最初のコメント、この行は実行されない。
print("hello world!") # 2番目のコメント
シングルクォート
ブロックコメントとも呼ばれ、改行をサポートします。
'''
最初の行はコメントアウトされ、この行は実行されない。
行目はコメントアウトされており、この行は実行されない。
3行目はコメントアウトされ、コードは実行されない。
'''
print('hello world!')
""" 三重引用符
ブロックコメントとも呼ばれ、改行をサポートします。
"""
最初の行はコメントアウトされ、この行は実行されない。
行目はコメントアウトされており、この行は実行されない。
3行目はコメントアウトされ、コードは実行されない。
"""
print('hello world!')
エスケープ文字
よく使われるエスケープ文字
| \ | 行の継続 |
| \ | バックスラッシュ() |
| \ | シングルクォート |
| " | ダブルクォート |
| 改行 | |
| キャリッジリターン | |
| \t | Tab |
\ 行末。
>>> print("www\ .python.\ org") # 結果を出力する www.python.orgバックダブルスラッシュ2つ、エスケープしてバックスラッシュ1つにします。
正常でない結果 例
>>> str = 'c:\windows ote' >>> print(str) # を出力する:' 'は改行として使用されるため、次のようになる。 c:\windows ote正常な結果 例
# ' ' '\ 'で終了だ。 >>> str = 'c:\windows\ ote' >>> print(str) # 出力結果を修正する: c:\windows ote
インデント
インデントには4つのスペースとタブを厳密に使用してください。
def fun():
print('hello world')
print('hello world')
識別子
識別子の本質は、プログラマが直接アクセスできない特定のデータ構造の値に対応することです。
識別子フォーマット定義の要件
- 文字とアンダースコア;
- 数字で始めることはできません;
- python組み込みと同じ名前を持つことはできません;
- アルファベットの大きさ
エラー識別子 例
# 識別子が数字で始まることはできない。
>>> 123 = '123'
File "<stdin>", line 1
SyntaxError: can't assign to literal
# classは識別子としてではなく、pythonのクラスに使われる。
>>> class = 'abc'
File "<stdin>", line 1
class = 'abc'
^
SyntaxError: invalid syntax
- 識別子の保持
| None | break | except | in | raise |
| TRUE | class | finally | is | return |
| and | 行の継続 | for | lambda | を返し、ラムダを続けます。 |
| as | def | from | nonlocal | while |
| assert | del | global | not | with |
| async | elif | if | or | yield |
言語タイプ
Python は動的で強く型付けされた言語です。
動的コンパイル言語
- 事前にデータ型を宣言する必要がなく、自由に他のデータ型を代入することができます;
- 型がわからないと推論しにくいのもpythonの悪いところですが、v3.8ではこの点の改善が厳しく求められています;
# 識別子はデータ型を自由に切り替える。 x = 123 # xを整数で定義する x = '123' # xを文字列として定義する強い型付き言語
異なる型間で変数を代入する場合、型変換を表示する必要があります。
>>> x = 123 # xを整数で定義する >>> y = '456' # yを文字列として定義する # 型エラーを報告、異なる型を一緒に加算できない >>> print(x + y) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'str' # ループを同じ型に強制する >>> print(str(x) + y) 123456
演算子
算術演算子
一般的な算術演算子: 加算、減算、乗算()
加算 例
>>> test = 1 + 1 >>> print(test) # 出力は以下のようになる: 2減算 例
>>> test = 1 - 1 >>> print(test) # 出力は以下のようになる: 0乗算 例
>>> test = 1 * 1 >>> print(test) # 出力は以下のようになる: 1除算 例
>>> test = 4 / 2 >>> print(test) # 出力は以下のようになる: 2.0 #結果は浮動小数点型の注: python2.x / と // はどちらも丸めです。
四捨五入 例: 四捨五入や階で割ることでも知られています。
>>> test1 = 5 // 2 >>> test2 = -5 // 2 >>> print('test1現在のループの結果を返す:',test1) >>> print('test2現在のループの結果を返す:',test2) # 出力は以下のようになる: test1現在のループの結果:2# 実際の結果は2.5break: 2に近いので、2を取る test2現在のループの結果を返す:-3 # 実際の結果は-2.5 -3そのため-3モジュロの取り方 例: 両方が正の場合、余りの取り方もモジュロの取り方も余りの取り方ですが、特に注意すべきところは、正の数と負の数の使い分けで、これは公式の助けを借りて行われます:
* モジュロ * = x % y = x - [x // y] * y
>>> test1 = 5 % 3 >>> test2 = -5 % 3 # =-5 % 3=(-5)-[-5//3]*3=(-5)-(-2)*3=-5+6=1 >>> test3 = 5 % -3 # =5 % (-3)=5-[5//(-3)]*(-3)=5-(-2)*(-3)=5-6=-1 >>> test4 = -5 % -3 # =-5 % (-3)=-5-[-5//(-3)]*(-3)=-5-(1)*(-3)=-5+3=-2 >>> print('test1現在のループの結果を返す:',test1) >>> print('test2現在のループの結果を返す:',test2) >>> print('test3現在のループの結果を返す:',test3) >>> print('test4現在のループの結果を返す:',test4) # 出力は以下のようになる: test1現在のループの結果:2 test2現在のループの結果:1 test3現在のループの結果を返す:-1 test4現在のループの結果を返す:-2累乗の例
>>> test = 2 ** 2 >>> print('tests現在のループの結果を返す:',test) # 出力は以下のようになる: test現在のループの結果:4
ビット演算子
ビット演算子 AND、ビット演算子 OR、異なる OR、左シフト、右シフト
コンピュータの言語はすべて2進数で表現され、ビット演算も2進数で計算されます。
次の例では、次の2つの識別子を使って計算を行います。
x = 18 #10バイナリに変換する: 0001 0010
y = 20 #102進数に変換: 0001 0100
ビット演算と例:
説明: ビットとバイナリで計算され、両方のビットが取得され、そうでない場合は、次のようになります。
>>> x = 18 >>> y = 20 >>> print('x & y 結果', x & y) # 出力は以下のようになる: x & y 結果は以下のようになる。ビット毎または説明:ビット毎またはバイナリ内の2つのビットの一方は、である必要があり、そうでない場合は両方があります。
>>> x = 18 >>> y = 20 >>> print('x | y 結果', x | y) # 出力は以下のようになる: x | y 結果は以下のようになる。説明: 異なるまたはは、両方のビットがバイナリでgetを持っていることを意味します。
>>> x = 18 >>> y = 20 >>> print('x ^ y 結果', x ^ y) # 出力は以下のようになる: x ^ y 結果は次のようになる。左シフト 左シフトは、最上位にビットの全数を移動します。
>>> x = 18 >>> y = 20 >>> print('x 1ビット左シフトの結果は次のようになる:', x << 1) >>> print('y 2ビット左シフトの結果は次のようになる:', y << 2) # 出力は以下のようになる: x 左に1ビットシフトした結果は次のようになる: 36 y 2ビット左シフトの結果は次のようになる: 80Shift right Shift right は、全体を最下位に移動します。
>>> x = 18 >>> y = 20 >>> print('x 1ビット右シフトの結果は次のようになる:', x >> 1) >>> print('y 2ビット右シフトの結果は次のようになる:', y >> 2) # 出力は以下のようになる: x 右に1ビットシフトした結果は次のようになる: 9 y 2ビットの右シフトの結果は次のようになる: 5
比較演算子
一般的な比較演算子は、等しい、等しくない、より大きい、等しい以上、より小さい、等しい以下であり、ブール値の結果を返します。
比較演算子は、同じデータ型の比較にのみ使用できます。たとえば、同じ数値型の比較、同じ文字列の比較などです。
>>> x = '18'
>>> y = 20
>>> print('比較の結果はこうなる:', x < y)
# 異なる型を比較することはできない。
TypeError: '<' not supported between instances of 'str' and 'int'
等しい 例
>>> x = 18 >>> y = 20 >>> print('比較の結果はこうなる:', x == y) # 出力は以下のようになる: 比較結果は「偽」である。等しくない 例
>>> x = 18 >>> y = 20 >>> print('比較の結果はこうなる:', x != y) # 出力は以下のようになる: 比較の結果は、Trueである。より大きい 例
>>> x = 18 >>> y = 20 >>> print('比較の結果はこうなる:', x > y) # 出力は以下のようになる: 比較結果は「偽」である。大なり 小なり 例
>>> x = 18 >>> y = 20 >>> print('比較の結果はこうなる:', x >= y) # 出力は以下のようになる: 比較結果は「偽」である。以下 例
>>> x = 18 >>> y = 20 >>> print('比較の結果はこうなる:', x < y) # 出力は以下のようになる: 比較の結果は、Trueである。以下 例
>>> x = 18 >>> y = 20 >>> print('比較の結果はこうなる:', x <= y) # 出力は以下のようになる: 比較の結果は、Trueである。
論理演算子
一般的な論理演算子:and, or, not
論理演算子は必ずしもブール型を返すとは限りません。
また、まず、偽のオブジェクトを理解するために、事前に理解しやすい、これらを持っています:
- 例では
すべての条件が真であれば、返り値は真、そうでなければ偽です。
x = 1
y = -1 #負のオブジェクトは常に真である
if x and y:
print('x and y ')
else:
print('x and y そのうちの1つは偽である。')
# 出力は以下のようになる:
x and y
######################################
x = 1
y = '' #空文字列オブジェクトは偽である
if x and y:
print('x and y ')
else:
print('x and y そのうちの1つは偽である。')
# 出力は以下のようになる:
x and y そのうちの1つは偽である。
例: 条件のひとつが真であれば、返り値は真、そうでなければ偽。
x = 1 y = [] if x or y: print('x or y ') else: print('x or y ') #出力は以下のようになる: 'x or y ###################################### x = 0 y = [] if x or y: print('x or y ') else: print('x or y ') #出力は以下のようになる: x or y例:not objectがTrueならFalseに、not objectがFalseならTrueになるように、TrueとFalseを逆に設定します。
x = 1 if not x: print('実際、xオブジェクトはfalseである。') else: print('実際、xオブジェクトは真である。') #出力は以下のようになる: 実際、xオブジェクトは真である。 ###################################### x = {} if not x: print('xオブジェクトは実際には偽の') else: print('確かに、xオブジェクト') #出力は以下のようになる: 実際、xオブジェクトはfalseである。
代入演算子
代入とは、=記号の右側の値1を左側の変数xに代入することです。
一般的な演算子: =, +=, -=, =, ˶=.
さらに、連鎖代入も使用できます: x = y = z = 1、つまり、x = 1,y = 1,z = 1。
簡単な代入の例:
>>> x = 1 #右側の値1が左側のXに代入される。
>>> y = 'hello' #右の文字列'hello'は左のyに代入される。
複雑な代入の例
>>> x = 1
>>> x += 1 #以下と同じ。= x + 1実行する=数値の右辺の式は、Xの左辺に代入される。
>>> print('x結果はこうなる:',x)
#出力は以下のようになる:
2
メンバ演算子
一般的なメンバシップ演算子: in と not in。
in は、x のメンバがターゲット y オブジェクトに存在するかどうかを示し、存在する場合は True を返し、存在しない場合は False を返します。
>>> x = 'a'
>>> y = 'abcdefg'
>>> print('xyの中のメンバー', x in y)
#出力は以下のようになる:
xメンバー y: True# xメンバー文字列の'a'はyメンバ文字列の中にあるので、結果はTrueになる。
not in は、x のメンバがターゲット y オブジェクト内にないことを示し、not in の場合は True を返し、それ以外の場合は False を返します。
>>> x = 'a1'
>>> y = 'abcdefg'
>>> print('xこれはyの内部にはない:', x not in y)
#出力は以下のようになる:
xがyにない:真# xメンバー文字列の'a'はyメンバ文字列の中にあるので、結果はTrueになる。
同一性演算子
同一性演算子は、is と is not を使用して、メモリ・アドレスで識別子が同じオブジェクトを参照しているかどうかを判断します。
同一性演算子は文字どおり簡単な場合が多いので、まず == と is を区別することが重要です:
==は、代入の内容が同じかどうかを判断します;
is:は、識別子が同じオブジェクトのメモリ・アドレスを参照しているかどうかを指します。
ここでは、ロジック図を通じて、理解しやすい、実証するために:
例は次のとおりです:
>>> x = ['a','b','c']
>>> y = ['a','b','c']
>>> print('xbreakのIDは:',id(x))
>>> print('ybreakのIDは:',id(y))
>>> print('x とyが等価であるかどうか(=):',x == y)
>>> print('x とyは、メモリアドレス:',x is y)
#出力は以下のようになる:
xbreakのIDは: 1986422101448
ybreakのIDは: 1986422101960
x とyが等価であるかどうか(=): True
x とyはメモリアドレス: False
オペレーションの優先順位
オペレーターの例を見てみましょう。どこから始め、第2段階は何か、最終結果は何か?最後の結果は何ですか?
-1 + 10 > 5 and 2 < 1
# 出力は以下のようになる:
False
演算子の優先順位は、上から下へ、優先順位の高いものから低いものへ:
組み込み関数
一般的な組み込み関数:
| print(value, sep=' ', end=' ') | コンソールにデータを出力します。デフォルトでは空白を区切り文字として使用し、改行します。 | |
| input | input(value) | コンソール上でユーザと対話し、ユーザ入力を受け取り、文字列を返します。 |
| int | int(value) | データを整数に変換します。 |
| str | str(value) | データを文字列に変換します。 |
| type(value) | type | オブジェクトの型を決定 |
| isinstance | isinstance(obj,tuple) | オブジェクトの型を決定 |
print 例
>>> print('www','python','org',sep='.',end='') #文字列間にsepを使う='.'分割、終了='' # 出力は以下のようになる: www.python.orginput
int 例
>>> x = '123' # '123'は文字列である。 >>> y = int(x) # int文字列'123'整数123に変換する >>> print('文字列から整数への変換',type(y), y) # 出力は以下のようになる: 文字列から整数への変換<class 'int'> 123str 例
>>> x = 123 >>> y = str(x) >>> print('整数を文字列に変換する:',type(y), y) # 出力は以下のようになる: 整数を文字列に変換する:<class 'str'> 123type 例:isinstance
>>> x = '123' >>> y = 123 >>> print('xどんな型か?',type(x)) >>> print('yどんな型か?',type(y)) # 出力は以下のようになる: xどんな型か?<class 'str'> yどんな型か?<class 'int'>isinstance 例
>>> x = '123' >>> y = 123 >>> print('xそれは整数か?',isinstance(x, int)) >>> print('yそれは整数か?',isinstance(y,(int,str)) #(int,str)ビットのタプル、またはリレーションシップ # 出力は以下のようになる: xそれは整数か? 偽 yそれは整数か? 真か?
ループ文
プログラムが正しく実行できるかどうかは、シーケンス、分岐、ループがなければなりません。
通常の順序:上から下へ、一つずつ;
分岐:シングルブランチとマルチブランチ、条件が満たされている場合は、条件の下でステートメントを実行します;
シングルブランチ
if : # x = 1 if x > 0: #条件がtrueの場合、以下のブロックを実行する。 print('hello world!')多重分岐
if 条件1: elif 条件2: elif 条件3: ... else: # x = 1 if x < 0: print("x ") elif x==0: print('x ') else: print('x ')
ループ:条件が満たされれば繰り返し実行し、満たされなければ実行しません;
一般的なループ文: for文、while文、continue文、break文;
for 文 標準形式:
for [ ] in [反復可能オブジェクト]:for文とrange()関数の組み合わせ:
例: range() は、値を返すためにトグルする必要のある不活性オブジェクトです。
#range(stop)範囲[0,5)ループが複数階層に入れ子になっている場合は、そのシーケンスを返す。 for i in range(5): print(i) # 出力は以下のようになる: 0 1 2 3 4 ################################################# #range(start,stop,step),stepステップサイズを示す for i in range(0,10,2): print(i) # 出力は以下のようになる: 0 2 4 6 8
while ループ
デッドループがあったり、ループの回数が明示的にわからない場合に使います。標準的なステートメント:
# while 1: print('これは死んだループである')
デッドループ 例
x = 3
while x:
print(x)
x -= 1
# 出力は以下のようになる:
3
2
1
通常のループ 例
for x in range(10):
if x % 2 == 0:
continue
print('これは実行されない。') #決して
print(x)
x -= 1
# 出力は以下のようになる:
1
3
5
7
9
また、上記の結果が3 2 1にしかならない理由を考えてみてください。
continue
continueは現在のループをスキップして次のループに進みます。
x = 0
while True:
x += 1
if x > 3:
break
print(x)
# 出力は以下のようになる:
1
2
3
break : 現在のループを終了します。
複数のループが入れ子になっている場合、breakは現在のループにしか影響しないことに注意してください。





