Parâmetros do Range
Uma coisa muito importante sobre o range, é que ele pode receber como parâmetros até 3 valores.
A gente tinha visto um caso em que ele recebe um valor, vamos supor que esse valor seja N.
E aí, ele vai aumentar de zero até N menos 1, percorrendo todos os valores inteiros de zero até N menos 1 e aumentando sempre de 1 em 1.
Vamos ver agora o caso em que a gente coloca dois números dentro do parêntese, no caso aqui M e N.
No lugar de começar de zero, ele começa de M, ou seja, na primeira iteração, no lugar da nossa variável valer zero, vai começar valendo M e vai aumentando até N menos 1 de 1 em 1.
Vamos ver aqui um exemplo, a gente criou aqui: for I in range 3,5 print I.
Como a gente comentou, na primeira iteração, o lugar dele começar valendo zero, ele vai começar valendo o primeiro número que está aqui no parêntese, no caso, 3.
Então, na primeira iteração, I vai valer 3, e aí ele vai imprimir I.
E como
na primeira iteração I vale 3, a primeira impressão é 3.
E aí, vamos para a segunda iteração.
I vai valer 4, e ele vai imprimir I, então, a segunda impressão é 4.
Nota que aqui a gente já chegou no valor de N menos 1, então, ele não vai até 5.
Então, a gente vai encerrar as impressões por aqui.
Agora vamos ver o caso em que a gente coloca 3 valores dentro do parêntese do range.
Nesse caso, a gente vai começar de M indo até N menos 1, só que agora no lugar de aumentar de 1 em 1, a gente vai aumentar de Q em Q.
Então, vamos ver um caso.
A gente tem for I in range 3,9,2 e a gente vai imprimir I.
A gente vai imprimir, na primeira iteração I vai valer 3, que, no caso, é o primeiro número aqui, então, ele vai imprimir 3.
Como a gente vai aumentar, no caso, de 2 em 2, no lugar dele ir para 4, ele vai para 5.
Então, na segunda iteração I vai valer 5, e quando ele imprimir I, no lugar dele imprimir 4, ele vai imprimir 5.
E aí, na terceira iteração, seguindo a mesma lógica, I vai valer 7, e aí quando ele imprimir I, vai imprimir 7.
Aqui, se a gente fizesse mais uma iteração, ele ia para 9.
Então, ele ia chegar no valor de N.
E como a gente não quer isso, ele vai só até N menos 1, então, ele não vai fazer mais nenhuma impressão, vai acabar por aqui esse laço.
Agora, vamos comparar os ranges com o for, com como a gente estava acostumado que é com while.
Fazer for I in range N print I, seria o mesmo que a gente criasse uma variável I que comece valendo zero, e aí, enquanto ela fosse maior do que N, a gente imprime I e soma 1 em I.
Ou seja, a gente está começando do zero e aumentando de 1 em 1 até chegar em N.
Se a gente colocar for I in range M, N e imprime I, é como se a gente começasse com I valendo M no lugar de valendo zero, e aqui a gente fizesse exatamente a mesma coisa daqui, aumentando 1 a cada iteração do while e sempre imprimindo I, só que agora começando de M.
E aí, no terceiro caso em que a gente tem 3 variáveis dentro do parêntese, a gente vai começar de I, de M e enquanto I for menor do que N, ele vai imprimir I e no lugar de somar 1, ele vai somar Q, que é o terceiro número aqui do parêntese.