Я получаю эту ошибку снова и снова (ошибка типа: невозможно умножить последовательность на не-int типа ‘list’)

#python #pygame #sys

#python #pygame #sys

Вопрос:

Пройдитесь, как вы видите в определении функции, я получаю ошибку

"can't multiply sequence by non-int of type 'list'".

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

    import matplotlib.pyplot as plt 
   import random
    
    class RandomWalk():
        
        def __init__(self, num_points = 5000):
            #Initialize attributes of a walk
            self.num_points = num_points
            # walk start at (0, 0)
            self.x_value = [0]
            self.y_value = [0]
            
        def walk(self):
            while len(self.x_value) < self.num_points:            
                # Decide which direction to go and how far to go in that direction.
                x_direction = random.choices([1, -1])
                x_distance = random.choices([0, 1, 2, 3, 4])
                x_step = x_direction * x_distance # here i am getting this error I'm trying to resolve but not able to fix some body help me...
                y_direction = random.choices([1, -1])
                y_distance = random.choices([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_value[-1]   x_step
                next_y = self.y_value[-1]   y_step
    
                self.x_value.append(next_x)
                self.y_value.append(next_y)
                
    
    # Make a random walk, and plot the points.
    rw = RandomWalk()
    rw.walk()
    
    plt.scatter(rw.x_value, rw.y_value, s = 15)
    plt.show() 
  

Комментарии:

1. извините. В функции Walk() Я получаю эту ошибку

Ответ №1:

Ошибка вызвана тем, что x_direction и x_distance являются списками. Вы должны использовать random.choice вместо random.choices (сосредоточиться s на конце):

 x_direction = random.choice([1, -1])
x_distance = random.choice([0, 1, 2, 3, 4])
x_step = x_direction * x_distance
  

В то время random.choice как возвращает 1 элемент списка, random.choices возвращает список из k элементов, где k является необязательным аргументом. Смотрите random