The python compiles successfully, but the execution does not have the result what to do?

random_walk.py

from random import choice

class RandomWalk():
    """ Generate random walk date class """
    
    def __init__(self,num_points=5000):
        """ initialise random walk date Class """
        
        self.num_points = num_points
        -sharpall random walk start from ( 0 , 0 )
        self.x_values = [0]
        self.y_values = [0]
    
    def fill_walk(self):
        """ calculate all points contained in random walk """
       
        -sharp~ Keep taking steps until the walk reaches the desired length.
        while len(self.x_values) < self.num_points:
            
            -sharp~Decide which direction to go, and how far to go in that direction.
            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
            
            if x_step ==0 and y_step ==0:
                continue    
                
               
                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)
      
  
            

rw_visual.py

import matplotlib.pyplot as plt
from random_walk import RandomWalk

while True:
    -sharpcreate an instance of randomwalk and draw the points contained in randomwalk
    rw = RandomWalk(50000)
    rw.fill_walk()
    
    -sharpset the size of window
    plt.figure(dpi=128, figsize=(8 ,6))
    -sharppainting the point and appared it 
    point_numbers = list(range(rw.num_points))
    plt.scatter(rw.x_values, rw.y_values, c=point_numbers, 
                cmp=plt.cm.Blues, edgecolor = "none" ,s=1)
      
    -sharpstart point and end point
    plt.scatter(0, 0,c="green", edgecolors="none", s=50)
    plt.scatter(rw.x_values[-1], rw.y_values[-1], c="red",
                edgecolor = "none" ,s=50)
    
    -sharphide axss
    plt.axes().get_xaxis().set_visible(False)
    plt.axes().get_yaxis().set_visible(False)
    
    plt.show()
    keep_running = input("Make another walk(y/n):")
    if keep_running =="n":
        break
        

Feb.28,2021

fill_walk is in an endless loop. Of course, you can't see the following input prompt

.

when the if condition, the operation of adding elements directly to continue, cannot be performed until
does not meet the if condition, and the operation of adding elements cannot be performed to

. The length of

self.x_values has not changed.

Menu