■94422 / inTopicNo.14) |
Re[13]: Pythonでのfor文による繰り返し |
□投稿者/ 魔界の仮面弁士 (2679回)-(2020/04/10(Fri) 20:36:44)
|
■No94421 (るる さん) に返信 > それと(2)。
はい、(2) で正解です。
Python の『for j in range(0, i):』は VB の『For j = 0 To i - 1』にあたります。
実際には、『For Each j In Enumerable.Range(0, i)』の方がより近いですけれどね。
range 型の解説はこのあたりをご覧ください。 https://docs.python.org/ja/3/library/stdtypes.html?highlight=range#range
『range(3)』 は range(0, 3) や range(0, 3, 1) と同義です。これは 3 個の値「0」「1」「2」「3」になります。 『range(1)』 は range(0, 1) や range(0, 1, 1) と同義です。これは 1 個の値「0」になります。 『range(0)』 は range(0, 0) や range(0, 0, 1) と同義です。これは 0 個の値になります。
> さて1回でしょうかね。
いいえ、違います。ループ回数は 0 回です。 だから、@Aが実行されなかったのです。
『for j in range(i):』や『for j in range(0, i):』は i 回のループを表します。
i が 3 なら 3 回のループですし、 i が 0 なら 0 回のループです。
VB の「For j = 0 To i - 1」も、ループ回数は i 回ですよね?
『list(range(3))』 は 「 [0, 1, 2] 」です。 『list(range(1))』 は 「 [0] 」です。 『list(range(0))』 は 「 [] 」です。
『list(range(2, 13, 3))』 は 「 [2, 5, 8, 11] 」です。
range に対して、正の添字でアクセスすると、先頭から n 個目の値が得られます。
『range(3)[0]』 は 「 0 」です。 『range(3)[1]』 は 「 1 」です。 『range(3)[2]』 は 「 2 」です。 『range(3)[3]』 は範囲外なので IndexError です。
range に対して、負の添字でアクセスすると、末尾から n 個目の値が得られます。
『range(3)[-1]』 は 「 2 」です。 『range(3)[-2]』 は 「 1 」です。 『range(3)[-3]』 は 「 0 」です。 『range(3)[-4]』 は範囲外なので IndexError です。
|
|