Вы должны использовать свой генератор, чтобы увидеть результаты (например, в для l oop). Кроме того, генератор должен возвращать индивидуальные значения, а не накопленный список значений:
import random
def random_walk():
x = y = 0
offsets = [ (0,1),(0,-1),(1,0),(-1,0) ]
while True:
yield (x,y)
dx,dy = random.choice(offsets)
x,y = x+dx, y+dy
вывод:
from itertools import islice
print(*islice(random_walk(),10))
(0, 0) (-1, 0) (-1, -1) (0, -1) (0, 0) (-1, 0) (-1, -1) (-2, -1) (-2, -2) (-2, -1)
доказательство того, что оно бесконечно:
for point in random_walk(): print(point, end=" ")
(0, 0) (-1, 0) (-1, -1) (-1, -2) (0, -2) (0, -3) (0, -4) (-1, -4) (-2, -4) (-3, -4) (-4, -4) (-4, -5) (-5, -5) (-4, -5) (-3, -5) (-3, -6) (-4, -6) (-4, -7) (-4, -6) (-3, -6) (-3, -7) (-4, -7) (-5, -7) (-4, -7) (-5, -7) (-5, -6) (-4, -6) (-3, -6) (-4, -6) ...
обратите внимание, что вы должны прервать это l oop с помощью control- C, потому что оно бесконечно