Pythonの変数は、Cの変数と同様に記述されます。
Pythonプログラムの記述構造はインデントを使用し、中括弧を破棄します。
if(条件文1):
ステートメントブロックの実行
elseif(条件文2):
ステートメントブロックの実行
else:
ステートメントブロックの実行
whileループ状態:
ループ本体
式のターゲットの場合:
ループ本体
式の結果はターゲットと結合されます
ステップ機能
range(x,y,z)
x:開始
y:終了(y-1)
z:ステップサイズ
現在の構造から飛び出す
このループ本体の操作を終了します
>>> num =[1,2,3,4,5]//リストの作成>>> num //リスト出力[1,2,3,4,5]>>> num =['Hello','こんにちは',666]>>> num //リストはさまざまなタイプをサポートしており、数字を除くすべての文字は一重引用符を使用する必要があります['Hello','こんにちは',666]
>>> num.append(6)>>> num
[1,2,3,4,5,6]
>>> num.extend([7,8,9])>>> num
[1,2,3,4,5,6,7,8,9]
append()は、単純な展開である単一の要素を追加することです。
そして、extend()は、元のリストと新しいリストに追加するリストをつなぎ合わせます。
>>> num.insert(0,0)//インデックス0に要素0を追加します>>> num
[0,1,2,3,4,5,6,7,8,9]
>>> num.pop()9>>> num.pop(0)0>>> num
[1,2,3,4,5,6,7,8]
>>> num =[1,2,3,4,5,6,7,8]>>> num
[1,2,3,4,5,6,7,8]>>> del num[7]>>> num
[1,2,3,4,5,6,7]>>> del num
>>> num
Traceback(most recent call last):
File "<pyshell#19>", line 1,in<module>
num
NameError: name 'num' is not defined
エラーが報告された場合:numは存在しません
以前のdelステートメントとpop()関数はどちらも、リストのインデックスに依存してインデックスの下の要素を削除し、remove()はインデックスに依存せず、要素の特定のコンテンツに従って削除します。
>>> num =['Hello','こんにちは',666]>>> num
[' Hello','こんにちは',666]>>> num.remove(666)>>> num
[' Hello','こんにちは']>>> num.remove('こんにちは')>>> num
[' Hello']
リストのデータ要素の一部のみを出力、表示、またはコピーすることは、いわゆるリストの断片化です。
>>> num =['HUAWEI',"CHINA",'Mirror','XIAOMI']>>> num
[' HUAWEI','CHINA','Mirror','XIAOMI']>>> num[0:1]['HUAWEI']>>> num[0:2]['HUAWEI','CHINA']>>> num[0:4]['HUAWEI','CHINA','Mirror','XIAOMI']>>> num[:2]['HUAWEI','CHINA']>>> num[:]['HUAWEI','CHINA','Mirror','XIAOMI']>>> num[2:]['Mirror','XIAOMI']
注意深く観察し、スライスされた[x:y]が左閉と右開の範囲であることを確認します(原則)[pythonの範囲に関連する多くの閉問題は、左閉と右開の原則です]
同時に、フラグメンテーションメカニズムは範囲値の省略もサポートします。つまり、左が空の場合は0から始まり、右が空の場合は最後の要素で終わり、左と右の両方が空の場合はすべての要素が出力されます。
断片化には2つのパラメータしかないと誰もが考えていますか?
シャーディングには3つのパラメーターがあります==> [x:y:z]
x:開始
y:終了
z:ステップ長(つまり、増分の数はzであり、数学の算術の概念としても理解できます)
>>> num =[]//空の配列を作成する>>>for i inrange(1,10):
num.append(i)>>> num
[1,2,3,4,5,6,7,8,9]>>> num[0:10:2][1,3,5,7,9]
>>> list =[1,2,3,4]>>> copy = list
>>> copy1 = list
>>> copy2 = list[:]>>> copy1
[1,2,3,4]>>> copy2
[1,2,3,4]
上記からわかるように、リストの直接コピーの結果は、list [:]フラグメントコピーの結果と同じですが、実際には密かに焦ります。
>>> list.append(5)>>> copy1
[1,2,3,4,5]>>> copy2
[1,2,3,4]
元のソースリストappend()に要素を追加し、copy1の内容とリストソースリストが一緒に変更されていることを確認します(append()操作)
copy1 = list:copy1のリストのメモリアドレスに属します
copy2 = list [:]:copy2のlistの値に属します
このリストは、比較演算子の比較操作をサポートしています。
>>> list1 =[123]>>> list2 =[234]>>> list3 =[123]>>> list1 < list2
True
>>> list1 <= list3
True
>>> list1 == list3
True
>>> list1 != list2
True
>>> list1.append(234)>>> list2.append(123)>>> list1
[123,234]>>> list2
[234,123]>>> list1 > list2
False
2つのリストの比較は、ASCII値のサイズに基づいています。2つの要素が見つかった場合は最初の要素が比較され、最初の要素が同じ場合は2番目の要素が比較されます。
>>> str1
[' HUAWEI']>>> str2
[' CHINA']>>> str1 + str2
[' HUAWEI','CHINA']>>> str1 *3['HUAWEI','HUAWEI','HUAWEI']>>> str1 = str1 +str2
>>> str1
[' HUAWEI','CHINA']>>> str1[1]*3'CHINACHINACHINA'
>>> str1
[' HUAWEI','CHINA']>>>"CHINA"in str1
True
>>>" CHINA" not in str1
False
>>> str =["H","U","A","W","E","I"]>>> str
[' H','U','A','W','E','I']>>> str.index("I")5>>> str.index("K")//トレースバックを保存して要素が存在しません(most recent call last):
File "<pyshell#4>", line 1,in<module>
str.index("K")
ValueError:'K' is not in list
>>>
>>> list
[3,4,5,2,5,66,7,2,5,7]>>> list.count(5)3
>>> list
[3,4,5,2,5,66,7,2,5,7]>>> list.reverse()//逆配置>>> list
[7,5,2,7,66,5,2,5,4,3]>>> list.sort()//上昇>>> list
[2,2,3,4,5,5,5,7,7,66]>>> list.reverse()//逆配置(スロット+reverse ==>降順)>>> list
[66,7,7,5,5,5,4,3,2,2]
タプルは、一度定義すると変更できないリストとして理解できます。
>>> tuple =(1,2,3,4,5)>>> number =[1,2,3,4,5]>>>tuple(1,2,3,4,5)>>> number
[1,2,3,4,5]
タプルはタプル、番号はリストです。
見つけることができます; 2つの定義は異なります
タプルは括弧で構成されたリストデータのセットであり、リストは角括弧で構成されたデータのセットです
タプルのアクセス方法はリストと同じですが、タプルの要素は主にタプルのインデックスからアクセスし、リストのようにシャーディング(スライス)することでアクセスできます。
>>> tuple(1,2,3,4,5)>>> tuple[2]3>>> tuple[3]4>>> tuple[:](1,2,3,4,5)
>>> tup =()>>> num =[]>>>type(tup)<class'tuple'>>>>type(num)<class'list'>
多くの場合、括弧で定義されたリストデータはタプルと見なされますが、そうではありません。
>>> del tup
>>> tup
Traceback(most recent call last):
File "<pyshell#14>", line 1,in<module>
tup
NameError: name 'tup' is not defined
>>> tup =1,2,3,4>>>type(tup)<class'tuple'>
そうです、括弧のないリストデータもタプルです。
タプルを定義する特徴は次のとおりです。** comma **
>>>(6)*636>>>(6,)*6(6,6,6,6,6,6)
したがって、タプルを定義するときは、これがタプルであることをプログラムに伝えるためにコンマが必要です。
>>> tup =(1,2,3,)>>>type(tup)<class'tuple'>
これが最も標準的な定義方法ですが、なぜですか?
タプルとリストの機能は、データの変更を除いてほぼ同じです。タプルのデータは変更できませんが、タプルとタプルはスプライスできます。
>>> tup(1,2,3)>>> tup = tup[:3]+4,+5,Traceback(most recent call last):
File "<pyshell#28>", line 1,in<module>
tup = tup[:3]+4,+5,
TypeError: can only concatenate tuple(not "int") to tuple
>>> tup = tup[:3]+(4,)+(5,6,)>>>tup(1,2,3,4,5,6)
tupはスプライシングを使用してtupタプルデータを更新します。
注意:
ここでスプライシングする場合、スプライシングの内容は、これがタプルデータであることを示すために括弧とコンマでマークされます。それ以外の場合は、プログラムによって文字または数値データと見なされます。
カンマはタプルのシンボル定義です
>>> tup = tup[:2]+ tup[4:]>>>tup(1,2,5,6)
削除する必要のある要素は、要素を削除する目的を達成するためにスプライシングメソッドによってカバーされます。
タプルのデータは変更されていませんが、タプルはリストのように自由に接合できます:
最後のスライススプライシングメソッドを使用して、要素を要素に追加します(タプル要素のコンママークに注意してください)
スライスとスプライシングの方法を使用して、要素の前後のコンテンツを切り取り、削除し、新しいタプルにスプライスします
>>> char ="HUAWEI">>> str ='XIAOMI'>>> char
' HUAWEI'>>> str
' XIAOMI'
一重引用符と二重引用符を使用して文字列を作成できます
>>> str = str[:3]+"-"+ str[3:]>>> str
' XIA-OMI'
文字列の変更はタプルに似ており、文字列の内容はスライススプライシングによって変更されます。
ps:新しい文字列を新しい文字列変数に再構成するため、割り当てる必要があります
>>>'{0}- {1}={2}'. format('XIAOMI','HUAWEI','CHINA')'XIAOMI-HUAWEI=CHINA'
コードからわかるように、文字列の中括弧の内容は、formatメソッドに対応するパラメータ値インデックスの内容です。素人の言葉で言えば、中括弧内のインデックスは、フォーマット内の対応するパラメータ値を呼び出して文字列を形成します。 {形式のパラメータは次のように呼ばれます:位置パラメータ}
>>>'{ x}-{h}={c}'.format(x='XIAOMI',h='HUAWEI',c='CHINA')'XIAOMI-HUAWEI=CHINA'
フォーマットシンボル | 説明 |
---|---|
%c | 文字とASCIIのフォーマット |
%s | フォーマット文字列 |
%d | フォーマットされた整数(10進数) |
%o | 符号なしオクタルをフォーマット |
%x、%X | 符号なし16進数(小文字、大文字)をフォーマット |
%f | 浮動小数点数のフォーマット |
%e、%E | 浮動小数点数を科学的表記でフォーマットする |
上記は一般的なフォーマットのシンボル操作であり、C言語に似ています。
'[ フォーマット演算子]'%[フォーマットが必要なコンテンツ]
>>>' %c'%99'c'
書式設定操作は次のように表されます。パーセント記号==> %
パラメータコマンド | 説明 |
---|---|
mn | mは最小幅、nは小数点以下の桁数 |
- | 左揃え |
+ | 証明書の前にプラスを表示 |
# | それぞれ8月と10月の結果で表示されます:0oと0x / 0X |
0 | 番号の前のスペースを「0」で埋めます |
エスケープ文字 | 説明 |
\ ' | 一重引用 |
\ " | 二重引用符 |
\ a | システムビープ音 |
\ b | バックスペース |
\ n | newline |
\ t、\ v | タブ文字(8スペース) |
\ f | フォームフィード |
\ r | キャリッジリターン |
\ | バックスラッシュ | |
\ 0 | null文字を表します |
>>> list =list((1,2,3,4))>>> list
[1,2,3,4]>>> list =list("HUAWEI")>>> list
[' H','U','A','W','E','I']
>>> tuple =tuple("HUAWEI")>>>tuple('H','U','A','W','E','I')>>>type(tuple)<class'tuple'>
>>> s =str(1)>>> s
'1'>>> type(s)<class'str'>>>>tuple(s)('1',)
>>> num =[1,2,3,5,6,7]>>>len(num)6
>>> num =[1,2,3,5,6,7]>>>len(num)6>>>max(num)7>>>min(num)1
>>> num =[1,2,3,5,6,7]>>>sum(num)24
>>> num
[12,24,33,32,243,3,6,23,15,7,6,5,3,2,1]>>> sorted(num)[1,2,3,3,5,6,6,7,12,15,23,24,32,33,243]>>> num
[12,24,33,32,243,3,6,23,15,7,6,5,3,2,1]>>> num.sort()>>> num
[1,2,3,3,5,6,6,7,12,15,23,24,32,33,243]
コードでは、前のsort()と比較して、
sort():結果を昇順で返しますが、元のデータは変更しません
sort():ソースリストを昇順で並べ替えます
>>> list =list((2,4,67,3,7,3,8))>>>for i inreversed(list):print(i,end='-')8-3-7-3-67-4-2-
reverse()メソッドが逆反復で反復可能なシーケンスを出力することがわかります。
2タプル:要素が2のタプルは反復オブジェクトを構成し、各2タプルは反復パラメーターのインデックスと対応する要素で構成されます。
>>> for i inenumerate(list):print(i)(0,'H')(1,'U')(2,'A')(3,'W')(4,'E')(5,'I')
反復可能なパラメーターのタプルを返します
>>> list
[2,4,67,3,7,3,8]>>> str
[' H','U','A','W','E','I']>>>for i inzip(list,str):print(i)(2,'H')(4,'U')(67,'A')(3,'W')(7,'E')(3,'I')
関数の意味は、必要な反復関数コードをオブジェクト関数にカプセル化することです。オブジェクト関数は、必要なときに直接呼び出すことができます。
def out():print("Hello,World!")print("I am Mirror")out()//機能を呼び出す
Hello,World!
I am Mirror
関数を定義するときに、括弧内にパラメーター設定を追加して、関数のパラメーターを設定できます。関数を呼び出すときに、パラメーターを渡す必要があります。関数本体は、このパラメーター値を作業に使用することもできます。
def name(s):print(s)
def sum(x,y):print(x+y)name("Mirror")sum(1,2)================ RESTART ================
Mirror
3
関数は0個以上のパラメーター値を受け取ることができます。関数が定義されている場合、パラメーターのデータタイプは未定義にすることができます。
def name(s):return"I am {0}".format(s)
def sum(x,y):return"SUM = {0}".format(x+y)print(name("Mirror"))print(sum(1,2))================ RESTART================
I am Mirror
SUM =3
上記の例のパラメーターから、パラメーターの設定と受け渡しが認識されますが、渡すデータパラメーターの数がわからない場合はどうなりますか?
通常の状況では、引用符の先頭にある三重引用符は印刷されませんが、コメントの機能と非常によく似た保存されます。関数の機能を理解するために呼び出すと、三重引用符の内容を取得できます。
def sum(x,y):"""xを返す,yの合計"""return"SUM = {0}".format(x+y)print(sum.__doc__)================ RESTART ================
xを返す,yの合計
def sum(x,y):"""xを返す,yの合計"""return"SUM = {0}".format(x+y)print(sum(x=1,y=2))
正式なパラメータの名前をキーワードとして使用し、「割り当て」モードを使用して、実際のパラメータを指定されたパラメータに渡します
def sum(x=1,y=2):"""xを返す,yの合計"""return"SUM = {0}".format(x+y)print(sum())
デフォルトパラメータ:関数はパラメータを定義し、同時にデフォルトパラメータをパラメータに設定します。実際のパラメータを受け取ったときに関数が呼び出されると、パラメータのデフォルトパラメータが実行に使用されます。
渡されるパラメーターがわからないことについて提起された正式なパラメーターに戻ります。
上記の例のパラメーターから、パラメーターの設定と受け渡しが認識されますが、渡すデータパラメーターの数がわからない場合はどうなりますか?
このとき、可変パラメータ(パラメータ)を設定する必要があります。
def sum(* s):print(len(s))print(type(s))sum(1,2,3,4,5,6,7)================ RESTART ================7<class'tuple'>
観察と分析によると、アスタリスクで表される正式なパラメーターは、受信した実際のパラメーターシーケンスを自動的に「タプル」に圧縮します。可変パラメーターが使用されていない場合、単一の(数値、文字、文字列)パラメーターのみを渡すことができます
>>> dict ={1:10086,"a":"CHINA"}>>> dict
{1:10086,' a':'CHINA'}>>> dict[1]//キーインデックスと戻り値によると10086>>> dict["a"]'CHINA'
辞書の特徴は次のとおりです。中括弧で囲まれた一連のキーと値のペア
>>> del dict
>>> dict.fromkeys((1,2,3)){1: None,2: None,3: None}
>>> dict
{1: None,2: None,3: None}>>> dict.keys()dict_keys([1,2,3])
>>> dict.values()dict_values([None, None, None])
>>> dict.items()dict_items([(1, None),(2, None),(3, None)])
>>> dict
{1:10086,' a':'CHINA'}>>> dict.get("a")'CHINA'>>> dict.get(1)10086>>> dict.get("CHINA")>>> dict.get(112)
get()はキーを照会します。キーが存在しない場合、エラーは返されません。 in / not inを使用して、存在するかどうかを判断できます
>>> dict.clear()>>> dict
{}
ps:削除するのではなく、コンテンツを空にすることです
>>> dict
{1:10086,' a':'CHINA'}>>> c ={}//空の辞書を定義する>>> c
{}>>> type(c)<class'dict'>>>> c = dict.copy()>>> c
{1:10086,' a':'CHINA'}
>>> dict ={1:10086,"a":"CHINA"}>>> dict.pop(1)10086>>> dict
{' a':'CHINA'}>>> dict ={1:10086,"a":"CHINA"}>>> dict.popitem()('a','CHINA')>>> dict
{1:10086}
>>> dict.update({2:2019})>>> dict
{1:10086,' a':'CHINA',2:2019}
>>> dict1 ={}>>> dict2 ={1,2,3,4,5}//コレクションの作成>>>type(dict1)<class'dict'>>>>type(dict2)<class'set'>
コレクションの特徴は、コレクションを辞書と比較することで見つけることができます。
セットは中括弧を使用したコンマ区切りのシーケンスですが、該当するキーと値のペアは使用できません
>>> set={1,2,3,4,5,6}
>>> set1
{1,2,3,4,5,6}>>> for i in set1:print(i,end=" ")123456
ロゴ | 説明 |
---|---|
r | ファイルを読み取り専用として開く |
w | 書き込み用にファイルを開く |
x | ファイルが存在する場合、例外がスローされます |
a | 書き込み用に開いて、既存のファイルを追加できます |
b | バイナリでファイルを開く |
t | テキストとして開く |
+ | 読み取りおよび書き込みモード |
U | ユニバーサルニューラインサポート |
open():他の操作でファイルオブジェクトを使用できるようにファイルオブジェクトを作成するために使用されます
osモジュール; import os import os module
オブジェクトはファイルの形でディスクに保存できます。これは単純な永続化機能です。
prckle()を使用して、すべてのデータタイプのpythonをシリアル化し、ディスクに保存できます。
assertがプログラムをテストしているときに、コードにチェックポイントを挿入します
>>> list =['Mirror']>>> assert len(list)>0>>> list.pop()'Mirror'>>> assert len(list)>0Traceback(most recent call last):
File "<pyshell#3>", line 1,in<module>
assert len(list)>0
AssertionError
アサーションのアサート:ステートメントの背後にある条件が満たされると、アサーションはコンパイルされません。アサーションの条件が満たされると、プログラムにエラーが報告されます。
上記のコードプログラムのように:元のリストに要素があり、assertはエラーを報告しませんが、popメソッドが要素をポップアップ(削除)した後、assert条件が満たされない場合はエラーが報告されます。
try:
検査範囲
except exception[as e]:
検出後の例外への対処方法
finally://オプション
コードブロック
>>> try:
file =open("a.txt")
file.close()
except OSError:print("Error")
Error
たとえば、この例のプログラムは、ファイルファイルオブジェクトの呼び出し時にOSErrorエラーが発生したことを検出し、エラー(異常)コード実行ブロックを実行します。
>>> try:
file =open("a.txt")
file.close
except OSError as e:print(str(e)+"Error")
except TypeError as e:print(str(e)+"Error")[Errno 2] No such file or directory:'a.txt'Error
上記のように、as errorメソッドを使用してエラー情報をe変数に書き込み、strのタイプでエラー情報を出力します。同時に、さまざまな異なるエラータイプとエラー出力を定義できることがわかります。
例外:すべての例外の基本クラス(任意のクラスの例外を受け取ることができます)
AssertionError:assertステートメントが失敗しました(assert条件が確立されていません)
AttributeError:オブジェクトが持っていない属性にアクセスします(オブジェクト属性は存在しません)
IOError:入力および出力操作が異常です
ImportError:モジュールまたはパッケージをインポートできません(パスエラーなど)
IndexError:インデックスがシーケンス境界を超えています
KeyError:辞書に存在しないアクセスキー
KeyboardInterrupt:Ctrl + Cがトリガーされます
NamError:使用されるオブジェクトに変数がありません
SyntaxError:コードロジック構文エラー
TypeError:オブジェクトタイプとステートメントの要件が一致しません
UnboundLocalError:グローバル変数の例外
ValueError:渡された値が異常です
ZeroDivisonError:ゼロ例外による除算をトリガーします
クラス:クラスクラス名:
オブジェクト:defメソッド名():
プログラムは複数のクラスで構成でき、クラスは複数のオブジェクトメソッドで構成されます。
自己キーワード:自分を表すオブジェクトパラメータ
クラスメソッドと通常の関数の違いは1つだけです。追加のパラメーター名が必要ですが、このメソッドを呼び出すときにこのパラメーターに値を割り当てることはできません。Pythonがこの値を提供します。この特別な変数は、次の名前のオブジェクト自体を参照します。
オブジェクトがインスタンス化されている限り、このメソッドはオブジェクトが作成される前に自動的に呼び出されます。パラメータパラメータも自動的にメソッドに渡されます。このメソッドを使用して、初期化操作を上書きできます。
classPotate:
def __init__(self.name):
self.name = name
def kick(self):pirnt(self.name)
パブリック:パブリック、パブリック
プライベート:プライベート
上記はC ++とJavaのメソッドです。
Pythonのプライベート属性を表します:変数名の最初の2つの下線「__」
クラス名(継承されたクラス):
Pythonは複数の継承をサポートしています。つまり、クラスは複数の親クラスを継承します。[非推奨]
Recommended Posts