While/for文

4003 ワード

Python構文規則
1:ifなどの制御文が見つからない限り、文は行ごとに実行されます.
2:ブロックと文の境界は自動的に検出されます.括弧のようなものはないので、インデントです.
3:複合文の形式:最初の文の後に「:」、続いてインデント文
4:文書文字列!=注記:同じように無視されますが、実行時に自動的にオブジェクトに添付され、ドキュメントツールで表示できます.
ぶんぶんぶんかつし
Python文は一般的に行末表で終わりますが、文が長すぎる場合は、いくつかの方法で複数行に配置することができます.
1:構文カッコのペアを使用して、文を行にまたがらせます.かっこのペアには、()、{}、または[]が含まれます.
2:文は逆斜線で終わり、行をまたぐことができます.(現在は使用されていません)
3:その他のルールでは、三重引用符文字列ブロックまたはセミコロンで文を終了し、次に入力します.
whileサイクル
while <test1>:    
    <statement1>         # loop body
    if <test2>: break    # Exit loop now, skip else
    if <test3>: continue # Go to top of loop now, to test1
else:                    # Optional else
    <statement2>         # Run if didn't exit loop with break
breakはサイクル全体を飛び出します
continue現在のループからジャンプ
passは何もしないで、空占位文だけです.あるいは...何もしない
elseループが正常に離れたときに実行されます.つまりbreak文に遭遇しませんでした.
次のC言語でよく見られる形式はPythonではダメなwhile((x=next())!=null ) { ...process x...}
forサイクル
文字列、リスト、メタグループ、その他の反復可能なオブジェクトに使用できる任意の順序付きシーケンスオブジェクト内の要素を遍歴できる汎用シーケンス反復器です.
for <target> in <object>:
    <statements>
    if <test>: break
    if <test>: continue
else:
    <statements>

次の例では、実際には重要なのか、それとも値を割り当てる形式なのかを発見します.私たちの前の説明との違いは、その後ろにあるシーケンスです.それから、区切り記号として、一度に1つのセグメントで値を割り当てます.
>>> D={'a':1, 'b':2, 'c':3}
>>> for k in D:
... 	print(k, '=>', D[k])
... 
('a', '=>', 1)
('c', '=>', 3)
('b', '=>', 2)

>>> list(D.items())
[('a', 1), ('c', 3), ('b', 2)]
>>> for (k,v) in D.items():
... 	print(k, '=>', v)
... 
('a', '=>', 1)
('c', '=>', 3)
('b', '=>', 2)

>>> for ((a,b), c) in [((1,2),3),((4,5),6)]:
... 	print(a,b,c)
... 
(1, 2, 3)
(4, 5, 6)

Python 3の拡張賦値:肝心なのは*の導入である
>>> for (a,*b,c) in [(1,2,3,4),(5,6,7,8)]:
...	print(a,b,c)
...
1 [2,3] 4
5 [6,7] 8

>>> for all in [(1,2,3,4),(5,6,7,8)]:             #         ,k        'a'?         
...	a,b,c = all[0],all[1:3],all[3]
...	print(a,b,c)
...
1 (2,3) 4
5 (6,7) 8
証拠:forループのリストは、カンマを限界とし、毎回1組取り出して処理します.
>>> items = ["aaa", 111, (4,5),2.1]
>>> tests = [(4,5), 3.4]
>>> for k in tests:                                        #k      (4,5)    all              
... 	if k in items:
... 		print(k, "was found")
... 	else:
... 		print(k, "not found")
... 
((4, 5), 'was found')
(3.4, 'not found')

forファイルのループ読み込み
file = open('test.txt', 'r')
print(file.read())

file = open('test.txt')       #   read    
while True:
    char =file.read(1)        #for           
    if not char: break        #     ,break      
    print(char)


file = open('test.txt')                
while True:
    line = file.readline()
    if not line: break
    print(line, end='')

file = open('test.txt', 'rb')
while True:
    chunk = file.read(10)     #       rb  ,        10 byte.
    if not chunk: break
    print(chunk)

for char in open('test.txt').read():      #for           
    print(char)

for line in open('test.txt').readlines(): #readlines                 ,    for      。
    print(line, end='')

for line in open('test.txt'):             #iterator:best text input mode
    print(line, end='')                   #end     
,
whileループ読み込みファイル内容1行または1文字ずつ読み出し、逆数2,3のforとreadlineの効果は、まずファイルをメモリに入れます.もし書類が大きすぎたら?iteratorはファイル反復器で、ループごとに1行読み込まれます.
whileのメカニズムは最後のfor文で使用されるiteratorと同じですが、彼ら2人の速度には違いがあります.ItheratorはPythonではC言語の速度で実行され、whileはバージョンをループするときにPython仮想マシンでPythonバイトコードを実行します.