| ■No94418 (るる さん) に返信 >>その範囲をインデントで表現する言語仕様なのですよ。 > for文にまで、そのようなことがあるとは思いも因らぬことでした。
言語のリファレンスに目を通しましょうよ。
「プログラムは思った通りには動かない。書いたとおりに動く。」という格言があります。
まず、下記の点は理解されていますか?
print(-1 in range(3)) #False print(0 in range(3)) #True print(1 in range(3)) #True print(2 in range(3)) #True print(3 in range(3)) #False print(4 in range(3)) #False
> ところで、何故@、Aの箇所で > print(str(i) + '/DEF/' + str(j)) > print(str(i) + '/GHI/' + str(j)) > が実行されないのでしょう?
『range(3)』は、『range(0, 3, 1)』と同義です。0〜2 の 3 要素ですね。
『for i in range(0, 3, 1):』は、 C# で言えば「for (int i = 0; i < 3; ++i) { }」で VB で言えば「For i As Integer = 0 To (3 - 1) Step 1」です。
『for i in range(3, 0, -1):』は、 C# で言えば「for (int i = 3; i > 0; --i) { }」で VB で言えば「For i As Integer = 3 To (0 + 1) Step -1」です。
では問題。『for j in range(0, i):』というのは、 VB でいえば、以下のどの状態にあたると思いますか?
そして i が 0 の場合、そのループは何回走りますか?
(1) For j = 0 To i Step 1 (2) For j = 0 To i - 1 Step 1 (3) For j = 0 To i Step -1 (4) For j = 0 To i - 1 Step -1 |