Как я могу успешно ввести ввод после написания строки plt.show () через некоторое время l oop? - PullRequest
0 голосов
/ 14 июля 2020

Как новичок в Python3, я следил за учебником Python Cra sh. Следующий код печатает график, но не запрашивает ввод, как предполагалось. Я попытался разместить plt.show () после оператора if, но программа долго загружалась и в конечном итоге не отображала график. Есть ли способ исправить это?

Код:

import matplotlib.pyplot as plt

from random_walk import RandomWalk


while True:
    rw = RandomWalk()
    rw.fill_walk()
    plt.style.use('classic')
    fig, ax = plt.subplots()
    point_numbers = range(rw.num_points)
    ax.scatter(rw.x_values, rw.y_values,c=point_numbers, cmap=plt.cm.Blues, edgecolors='none', s=15)




    plt.show()

Программа не выводит следующие данные для ввода

    keep_running = input("Make another walk? (y/n):")

    if keep_running == 'n':
        break

Следующее сохраняется на отдельном файл

from random import choice

class RandomWalk:
    def __init__(self, num_points=5000):
        """Initialize attributes of a walk"""
        self.num_points = num_points
        self.x_values = [0]
        self.y_values = [0]

   def fill_walk(self):
       """ calculating 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 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

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

           # Calculate the new position
           x = self.x_values[-1] + x_step 
           y = self.y_values[-1] + y_step

           self.x_values.append(x)
           self.y_values.append(y)
...