интересно, почему результат этих двух отличается? - PullRequest
0 голосов
/ 06 июня 2018

Мне интересно, почему результат этих двух отличается?

import random
secretNumber = random.randint(1, 20)
for i in range(7):
  print(secretNumber)

import random
for i in range(7):
  print(random.randint(1, 20))

, но с другой стороны результат этих двух одинаков:

number = range(1,7)
for i in number: print(i)

for i in range(1,7): print(i)

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Я добавил несколько комментариев к коду, чтобы вы могли расшифровать, что происходит.

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)

0 голосов
/ 06 июня 2018

Первая переменная установлена ​​в том смысле, что значение будет постоянным / одинаковым.Второй получает разные значения в каждом цикле, потому что вы генерируете разные случайные числа в каждом цикле.

import random
secretNumber = random.randint(1, 20)
for i in range(7):
  print(secretNumber) # secretNumber will always be the same

import random
for i in range(7):
  print(random.randint(1, 20)) # will generate random number every loop
...