Random Walk (Python Cra sh Course) застрял в чем-то вроде петли - PullRequest
0 голосов
/ 14 апреля 2020

Я работаю с учебником Python Cra sh и не знаю, как решить проблему с компонентом Random Walk. Когда я запускаю код, командная строка застревает в «режиме обработки», который я не могу оставить, пока не закрою окно, т.е. Stuck image

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

Вот код для класса RandomWalk:

    from random import choice
    class RandomWalk():
    """A class to generate random walks."""

    def __init__(self,num_points=5):
        """Initialize attributes of a walk"""
        self.num_points = num_points

        #All walks start at (0,0).
        self.x_values = [0]
        self.y_values = [0]

    def fill_walk(self):
        """"Calculate all the points in the walk"""

        #Keep taking steps until the walk reaches the desired length
        while len(self.x_values) < self.num_points:
        #Decide which direction to go and how far to go there
            x_direction = choice([1,-1])
            x_distance = choice([0,1,2,3,4])
            x_step  = x_direction * x_distance

            y_direction = choice([1,-1])
            y_distance = choice([0,1,2,3,4])
            y_step = y_direction * y_distance

        #Reject moves that go nowhere
            if x_step == 0 and y_step == 0:
                continue

        #Calculate the next x and y values
        next_x = self.x_values[-1] + x_step
        next_y = self.y_values[-1] + y_step

        self.x_values.append(next_x)
        self.y_values.append(next_y)

Вот код для запуска RandomWalk:

import matplotlib.pyplot as plt

from random_walk import RandomWalk

#Make a random walk, and plot the points.

rw = RandomWalk(5)
rw.fill_walk()

plt.scatter(rw.x_values, rw.y_values, s=15)
plt(show)

Я ожидаю, что результатом этого кода будет представление matplot, которое показывает мне случайную 5-шаговую прогулку.

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 14 апреля 2020

Вы никогда не обновите x_values или num_points в то время как l oop, поэтому вы создаете бесконечное l oop.

Я думаю, вы пропустили вкладку в последних строках класса RandomWalk

...