Differences between revisions 1 and 12 (spanning 11 versions)
Revision 1 as of 2018-09-28 14:11:41
Size: 248
Comment:
Revision 12 as of 2018-10-04 05:30:33
Size: 3431
Comment:
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
----
<<TableOfContents(3)>>
----
== 制御構造:条件が成立している間の反復:While ==

=== 概要 ===

<<Anchor(abstract)>> [ <<Action(edit)>> ]

 * 条件~が成立している間,繰り返す
   * while は「~のあいだ」を意味する

=== 文法 ===

<<Anchor(syntax)>> [<<Action(edit)>>]


{{{#!highlight python
"while" <<条件式expression>> ":"
    <<ブロックsuite>>
         ...
["else:"
    <<ブロックsuite>>
         ...]
}}}


=== いろいろな使い方 ===

==== カウントアップ ====

 * 制御変数nでカウントする

{{{#!highlight python
n = 0
while n < 10:
    print( n )
    n += 1
}}}

{{{
0
1
2
3
4
5
6
7
8
9
}}}

 * 同等なfor文

{{{#!highlight python
for n in range(10):
    print( n )
}}}

{{{
0
1
2
3
4
5
6
7
8
9
}}}

==== カウントダウン ====

 * 制御変数nでカウントする

{{{#!highlight python
n = 10
while n > 0:
    print(n)
    n -= 1
}}}

{{{
10
9
8
7
6
5
4
3
2
1
}}}

 * 同等なfor文

{{{#!highlight python
for n in range( 10, 0, -1):
    print(n)
}}}

{{{
10
9
8
7
6
5
4
3
2
1
}}}

==== 無限ループを作って,breakでループ脱出する ====
<<Anchor(infinite_loop)>> [<<Action(edit)>>]

 * 詳細は,[[Python/Lang/ControlStructure/Loop/BreakStatement|Break文に関するセクション|target="_blank"]]で...

{{{#!highlight python
n = 0
while True:
    print( n )
    if n >= 7:
        break
    n += 1
}}}

{{{
0
1
2
3
4
5
6
7
}}}

 * キーボードから,特定の入力(以下では,半角大文字のエックス)がされるまで,入力がくりかえさせるパターン
<<Anchor(input_loop)>>

{{{#!highlight python
print( "X(半角大文字のエックス)が入力されるまで,キーボードからの入力を繰り返す" )
while True:
    data_string = input("何か入力してください>>> ")
    if data_string == "X":
        print( "終了します" )
        break
    print( "---- 入力[" + data_string + "]に対して何か処理をします\n" )
}}}

{{{
何か入力してください>>> 1
---- 入力[1]に対して何か処理をします

何か入力してください>>> 2
---- 入力[2]に対して何か処理をします

何か入力してください>>> 3
---- 入力[3]に対して何か処理をします

何か入力してください>>> 4
---- 入力[4]に対して何か処理をします

何か入力してください>>> X
終了します

}}}

==== else節 ====
<<Anchor(else)>> [<<Action(edit)>>]

 * else節 がある場合は,ループの最後に else節を実行する

{{{#!highlight python
n = 0
while n < 10:
    print( n )
    n += 1
else:
    print( "無事,終了しました" )
}}}

{{{
0
1
2
3
4
5
6
7
8
9
無事,終了しました
}}}


 * breakした場合は,else節は実行されない

{{{#!highlight python
n = 0
while n < 10:
    print( n )
    if n == 5:
        break
    n += 1
else:
    print( "無事,終了しました" )
}}}

{{{
0
1
2
3
4
5
}}}



制御構造:条件が成立している間の反復:While

概要

[ edit ]

  • 条件~が成立している間,繰り返す
    • while は「~のあいだ」を意味する

文法

[edit]

   1 "while" <<条件式expression>> ":"
   2     <<ブロックsuite>>
   3          ...
   4 ["else:"
   5     <<ブロックsuite>>
   6          ...]

いろいろな使い方

カウントアップ

  • 制御変数nでカウントする

   1 n = 0
   2 while n < 10:
   3     print( n )
   4     n += 1

0
1
2
3
4
5
6
7
8
9
  • 同等なfor文

   1 for n in range(10):
   2     print( n )

0
1
2
3
4
5
6
7
8
9

カウントダウン

  • 制御変数nでカウントする

   1 n = 10
   2 while n > 0:
   3     print(n)
   4     n -= 1

10
9
8
7
6
5
4
3
2
1
  • 同等なfor文

   1 for n in range( 10, 0, -1): 
   2     print(n)

10
9
8
7
6
5
4
3
2
1

無限ループを作って,breakでループ脱出する

[edit]

   1 n = 0
   2 while True:
   3     print( n )
   4     if n >= 7:
   5         break
   6     n += 1

0
1
2
3
4
5
6
7
  • キーボードから,特定の入力(以下では,半角大文字のエックス)がされるまで,入力がくりかえさせるパターン

   1 print( "X(半角大文字のエックス)が入力されるまで,キーボードからの入力を繰り返す" )
   2 while True:
   3     data_string = input("何か入力してください>>> ")
   4     if data_string == "X":
   5         print( "終了します" )
   6         break
   7     print( "---- 入力[" + data_string + "]に対して何か処理をします\n" )

何か入力してください>>> 1
---- 入力[1]に対して何か処理をします

何か入力してください>>> 2
---- 入力[2]に対して何か処理をします

何か入力してください>>> 3
---- 入力[3]に対して何か処理をします

何か入力してください>>> 4
---- 入力[4]に対して何か処理をします

何か入力してください>>> X
終了します

else節

[edit]

  • else節 がある場合は,ループの最後に else節を実行する

   1 n = 0
   2 while n < 10:
   3     print( n )
   4     n += 1
   5 else:
   6     print( "無事,終了しました" )

0
1
2
3
4
5
6
7
8
9
無事,終了しました
  • breakした場合は,else節は実行されない

   1 n = 0
   2 while n < 10:
   3     print( n )
   4     if n == 5:
   5         break
   6     n += 1
   7 else:
   8     print( "無事,終了しました" )

0
1
2
3
4
5

SoftEng: Python/Lang/ControlStructure/Loop/WhileStatement/Contents (last edited 2018-10-04 05:30:33 by TadashiIijima)