blog

pythonの基本

[toc] Pythonのあらゆる部分をコード化...![](--...////?=&=&=&s...

Dec 10, 2020 · 14 min. read
シェア

[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ビット左シフトの結果は次のようになる: 80
    
  • Shift 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 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.org
    
  • input

  • int 例

    >>> x = '123' # '123'は文字列である。
    >>> y = int(x) # int文字列'123'整数123に変換する
    >>> print('文字列から整数への変換',type(y), y)
    # 出力は以下のようになる:
    文字列から整数への変換<class 'int'> 123
    
  • str 例

    >>> x = 123
    >>> y = str(x)
    >>> print('整数を文字列に変換する:',type(y), y)
    # 出力は以下のようになる:
    整数を文字列に変換する:<class 'str'> 123
    
  • type 例: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は現在のループにしか影響しないことに注意してください。

Read next

DeFiとは?

RioDeFiは、伝統的な金融と分散型金融をつなぐことで、デジタル資産の普及を加速させることを使命とするブロックチェーン技術企業です。企業、金融機関、銀行を分散型台帳システムに接続するソリューションを開発。中核技術は、RIと呼ばれる次世代ブロックチェーン基盤です。

Dec 10, 2020 · 1 min read