Ali Tianchi Pythonトレーニングキャンプタスク1
1.ビット操作
例:4ビットごとに反転
print(bin(~4),~4)
#运行结果
-0b101 -5
計算:計算された16ビット4が最初のバイナリに変換される場合:0,000,000,000,000,100、それぞれが反転されて補数の最終結果が得られます:1,111,111,111,111,011 次に、元のコードを取得するための補数は:1000 0000 0000 0101、10進数に変換すると-5。
2.データ型と変換
2.1 getcontext()。precを使用して精度を調整する
例:1/3に4桁を予約させます。
import decimal
from decimal import Decimal
decimal.getcontext().prec=4
c=Decimal(1)/Decimal(3)
print(c)
#运行结果
0.3333
2.2isinstance(オブジェクト、クラス情報)
オブジェクト-インスタンスオブジェクト。
classinfo-直接または間接のクラス名、基本タイプ、またはそれらで構成されるタプルを指定できます。オブジェクトが既知のタイプかどうかを判別します。
print(isinstance(2, int))
print(isinstance(5.7, float))
print(isinstance(True, bool))
print(isinstance('5.22', str))
#运行结果
True True True True
isinstance()とtype()の違い:
type()は、サブクラスを親タイプとは見なさず、継承関係も考慮しません。
isinstance()は、サブクラスを親クラスタイプと見なし、継承関係を考慮します。
2つのタイプが同じかどうかを判断する場合は、isinstance()をお勧めします。
例:
class A:
pass
class B(A):
pass
print(isinstance(A(), A)) #True
print(type(A()) == A) #True
print(isinstance(B(), A)) #True
print(type(B()) == A) #False
3.ループステートメント
3.1 while-elseループ
while 布尔表达式:
代码块
else:
代码块
ときはしばらくのループが正常に実行され、それ以外の出力が実行される。場合はループの外にジャンプ文がで実行されている間など、ループ断線、の内容他のコードブロックが実行されません。
例:
count = 0
while count < 2:
print("%d is less than 2" % count)
count = count + 1
#break可直接跳出循环,不执行else语句
else:
print("%d is not less than 2" % count)
# 0 is less than 2
# 1 is less than 2
# 2 is not less than 2
3.2enumerate()関数
enumerate()関数は、走査可能なデータオブジェクト(リスト、タプル、文字列など)をインデックスシーケンスに結合し、データとデータ添え字を同時にリストするために使用されます。通常、forループで使用されます。
enumerate(sequence、[start = 0])
sequence –シーケンス、イテレーター、または反復をサポートするその他のオブジェクト。
開始添字の-the開始位置を。
例:
>>>seasons = ['Spring', 'Summer', 'Autumn', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Autumn'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) # 下标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Autumn'), (4, 'Winter')]
通常のforループ
>>>i = 0
>>> seq = ['one', 'two', 'three']
>>> for element in seq:
print i, seq[i]
i +=1
0 one
1 two
2 three
forループはenumerate()を使用します
>>>seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
... print i, element
...
0 one
1 two
2 three
4.デリバティブ
4.1リストの理解
リスト内包形式:
[コレクションの値のexpr [if条件]
例:
x = [-4, -2, 0, 2, 4]
y = [a * 2 for a in x]
print(y)
#[-8, -4, 0, 4, 8]
x = [[i, j] for i in range(0, 3) for j in range(0, 3)]
print(x)
# [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
a = [(i, j) for i in range(0, 3) if i < 1 for j in range(0, 3) if j > 1]
print(a)
# [(0, 2)]
4.2タプルの理解
タプル理解形式:
(コレクションの値のexpr [条件の場合])
例:
a=tuple(x for x in range(10))
print(a)
#(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
4.3辞書の理解
タプル理解形式:
{key_expr:コレクションの値のvalue_expr [条件がある場合]}
例:
b = {
i: i % 2 == 0 for i in range(10) if i % 3 == 0}
print(b)
# {0: True, 3: False, 6: True, 9: False}
4.4理解度を設定する
タプル理解形式:
{コレクションの値のexpr [条件の場合]
例:
c = {
i for i in [1, 2, 3, 4, 5, 5, 6, 4, 3, 2, 1]}
print(c)
# {1, 2, 3, 4, 5, 6}
4.5next()関数
next()は、イテレータの次のアイテムを返します。
next()関数は、イテレータを生成するiter()関数と一緒に使用する必要があります。
文法:
next(iterable [、default])
iterable-反復可能オブジェクト
default -optional、次の要素がない場合に返されるデフォルト値を設定するために使用されます。設定されておらず、次の要素がない場合、StopIterationがトリガーされます。
例:
# 首先获得Iterator对象:
it = iter([1, 2, 3, 4, 5])
# 循环:
while True:
try:
# 获得下一个值:
x = next(it)
print(x)
except StopIteration:
# 遇到StopIteration就退出循环
break
#1 2 3 4 5
5.例外処理
5.1 try-exceptステートメント
フォーマット:
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
作業の方法:
- まず、実行のtry節(との声明キーワード試みとキーワードを除くと
- 例外が発生しない場合は、except句を無視し、try句の実行後に終了します。
- 場合は、例外が発生したの実行中のtry節、残りのtry句は無視されます。例外のタイプがexceptの後の名前と一致する場合、対応するexcept節が実行されます。最後に、try-exceptステートメントの後にコードを実行します。
- 例外はいずれも一致しない場合を除き、例外が上位に渡されます試してみます。
例:
try:
f = open('test.txt')
print(f.read())
f.close()
except OSError:
print('打开文件出错')
# 打开文件出错
try文が複数含まれていてもよい除き、異なる特定の例外を処理するための条項。最大で1つのブランチのみが実行されます。
例:
dict1 = {
'a': 1, 'b': 2, 'v': 22}
try:
x = dict1['y']
except LookupError:
print('查询错误')
except KeyError:
print('键错误')
else:
print(x)
# 查询错误
try-except-elseステートメントがdictにないキーと値のペアをクエリしようとしたため、例外が発生しました。この例外は正確にKeyErrorに属している必要がありますが、KeyErrorはLookupErrorのサブクラスであり、LookupErrorはKeyErrorの前に配置されるため、プログラムは最初にexceptコードブロックを実行します。したがって、複数のexceptコードブロックを使用するときは、最もターゲットを絞った例外から最も一般的な例外まで、仕様の順序に従う必要があります。
除く句は、同時に複数の例外を処理することができ、そしてこれらの例外はタプルとして括弧内に配置されます。
例:
try:
...
except (OSError, TypeError, ValueError) as error:
print('出错了!\n原因是:' + str(error))
# 出错了!
# 原因是:unsupported operand type(s) for +: 'int' and 'str'
5.2 try-except-finallyステートメント
フォーマット:
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
finally:
无论如何都会被执行的代码
try句で例外が発生したかどうかに関係なく、finally句が実行されます。
5.3 try-except-elseステートメント
フォーマット:
try:
检测范围
except:
出现异常后的处理代码
else:
如果没有异常执行这块代码
利用を除き、それはすべての例外をキャッチするので、任意の例外タイプのない、これは良い方法ではありません、我々は、プログラムを介して特定の例外情報を識別することはできません。
5.4レイズステートメント
raiseステートメントを使用して、指定した例外をスローします。
例:
try:
raise NameError('HiThere')
except NameError:
print('An exception flew by!')
# An exception flew by!