Я добавил несколько комментариев к коду, чтобы вы могли расшифровать, что происходит.
import random
# run random.randint(1,20) method 1 time and store the value in variable secretNumber
secretNumber = random.randint(1, 20)
for i in range(7):
# Print the variable secretNumber 7 times (value is some integer)
print(secretNumber)
# Do whatever is in this loop 7 times
for i in range(7):
# Print the value returned by random.randint(1,20)
print(random.randint(1, 20))
# store range object (which is merely an iterator) in variable number
number = range(1,7)
# for loop will iterate the object stored in variable number
for i in number:
print(i)
# range(1,7) will always return the same object so number === range(1,7)
for i in range(1,7):
print(i)
Дополнительная информация о том, как работает диапазон в Python 3 против 2 Назначение диапазона переменной (Python)