#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